浮点数的表示与运算

182 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

浮点数的表示与运算

浮点数的表示

从科学计数法理解浮点数

image-20221011161118984

浮点数:

image-20221011162248089

阶码E反映浮点数的表示范围及小数点的实际位置

尾数M的数值部分的位数n反映浮点数的精度

尾数给出一个小数,阶码指明了小数点要向前/向后移动几位

例:阶码、尾数均用补码表示,求a、b的真值

a= 0 01 1.1001

a的阶码真值为 1

尾数的原码为 1.0111 对应真值为 -0.0111

a的真值为 2的1次方*(-0.0111)=-0.111

b= 0 10 0.01001

b的阶码真值为 2

尾数的原码为 0.01001 对应真值为 0.01001

b的真值为 2的2次方*0.01001=1.001

浮点数尾数的规格化

image-20221011163707861

image-20221011163851713

规格化浮点数:规定尾数的最高数值位必须是一个有效值

左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位,阶码减1

右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10),将尾数算数右移一位,阶码加1

image-20221011165140204

规格化浮点数的特点

1.用原码表示的尾数进行规格化:

规格化的原码尾数,最高数值位一定是1

正数为0.1XX...X的形式,其最大值表示为0.11...1;最小值表示为0.10...0。 尾数的表示范围为1/2<=M<=(1-2的负n次方)

负数为1.1XX...X的形式,其最大值表示1.10...0;最小值表示为1.11...1 尾数的表示范围为-(1-2的负n次方)<=M<=-1/2

2.用补码表示的尾数进行规格化:

规格化的补码尾数,符号位与最高数值位一定相反

正数为0.1XX...X的形式,其最大值表示为0.11...1;最小值表示为0.10...0。 尾数的表示范围为1/2<=M<=(1-2的负n次方)

负数为1.0XX...X的形式,其最大值表示1.01...0;最小值表示为1.00...0 尾数的表示范围为-1<=M<=-(1/2+2的负n次方)

image-20221011170302934

IEEE754

移码

移码:补码的基础上将符号位取反。注意:移码只能用于表示整数

image-20221012104637440

移码的定义:移码=真值+偏置值

此处8位移码的偏置值=128D=1000 0000B

image-20221012110553487

IEEE754标准

image-20221012114116181

image-20221012114340070

image-20221012115613447

image-20221012115648680

image-20221012115828070

浮点数的运算

浮点数加减运算步骤:

1.对阶、2.尾数加减、3.规格化、4.舍入、5.判溢出

image-20221012141452086

image-20221012150510107

舍入

image-20221012150633088