浮点数的表示
由于定点数的局限性,表示范围很有限,不能无限的增加表示的范围。
科学计数法:302657264526=3.026*10^11
将指数表示为阶码,前面表现数值的为尾数
+11 +3.026
阶符 | 阶码数值部分 | 数符 | 尾数的数值部分 |
---|---|---|---|
Jf | J1J2…Jm | Sf | S1S2…Sn |
尾数越长,表示的精度就越高。
设阶码为E,尾数为M,r为进制。r通常为2.
则N=rE*M
E反应了数据范围和小数点的精确位置,M反应了数据的精确度
Ex:下面的a和b均用补码表示了阶码和尾数,求真值。
a = 0,01;1.1001
b = 0,10;0.01001
a:阶码为+1,尾数的真值为-0.0111
小数点后移一位,真值为-0.111=-(0.5+0.25+0.125)=-0.875
b:阶码为+2,尾数为0.01001
小数点后移两位,真值为:1.001=1.125
浮点数尾数的规格化
若b = 0,10;0.01001,存储到一个8bit的存储空间会溢出,因为它占了9位。
这就需要对其进行规格化了。
因此尾数的最高位必须是有效值。
因此b=0,11;0.1001
这样的算数左移称为左规。
若尾数小数点左边有不止一个数值位的时候,需要进行小数点左移,阶数加数,称为右规。
规格化浮点数:规定尾数的最高位的数值必须是一个有效值。
左规:当浮点数运算的结果为非规格化的时候进行规格化处理,这时候根据情况将浮点尾数左移1位或多位,阶码减1或更多。
右规:当浮点数运算出现尾数溢出的情况(双符号位为01或10),将尾数右移一位,阶码加一。
Ex:
a=010;00.1100,b=010;00.1000,求a+b
由于阶码相同
a+b=2^2(00.1100+00.1000)
=2^2(01.0100)
=2^3(00.1010)
a+b=011;00.1010
原码和补码的规格化
若使用原码表示尾数:(最高位一定是1)
尾数正数为0.1……的形式,最大值为0.111……1,最小值为0.1000……0
尾数的表示范围1/2~1-2-n
尾数负数为1.1……的形式,最小值为1.111……1,最大值为1.1000……0
尾数的表示范围-(1-2-n)~-1/2
若使用补码表示尾数:(符号位与最高位一定异号)
尾数正数为0.1……的形式,最大值为0.111……1,最小值为0.1000……0
尾数的表示范围1/2~1-2-n
尾数负数为1.0……的形式,最小值为1.011……1,最大值为1.1000……0
尾数的表示范围-1~-(1/2+2-n)
Ex:补码表示规格化
0.110;1.1110100
0.011;1.01000
最后
以上就是忧心高跟鞋最近收集整理的关于【计算机组成原理】浮点数的表示浮点数的表示浮点数尾数的规格化原码和补码的规格化的全部内容,更多相关【计算机组成原理】浮点数内容请搜索靠谱客的其他文章。
发表评论 取消回复