持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
浮点数的表示与运算
浮点数的表示
从科学计数法理解浮点数
浮点数:
阶码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
浮点数尾数的规格化
规格化浮点数:规定尾数的最高数值位必须是一个有效值
左规:当浮点数运算的结果为非规格化时要进行规格化处理,将尾数算数左移一位,阶码减1
右规:当浮点数运算的结果尾数出现溢出(双符号位为01或10),将尾数算数右移一位,阶码加1
规格化浮点数的特点
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次方)
IEEE754
移码
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数
移码的定义:移码=真值+偏置值
此处8位移码的偏置值=128D=1000 0000B
IEEE754标准
浮点数的运算
浮点数加减运算步骤:
1.对阶、2.尾数加减、3.规格化、4.舍入、5.判溢出
舍入