为什么要用移码来表示阶码(指数)呢?

为什么要用移码来表示阶码(指数)呢?

这是为了方便浮点数在进行加减运算时进行对对阶操作,也就是比较大小

比如(1.01x2^-1)+(1.11x2^3)这两个数相加 ,在科学计数法中,通常是将小阶向大阶看齐。也就是将-1次方变为3次方。

如果用补码来表示-1:111;用补码表示3:011;很明显二进制中111比011大。所以结果会是第一个数大于第二个数,这是明显不对的。

所以通常是在阶的基础上加上偏置常数,当偏置常数为4时,-1+4=3;3+4=7;所以结果会是第二个数大于第一个数,这样才正确。

这就是为什么要用移码来表示浮点数中的阶的原因

阶码=移码=偏移常数+真值

 

那为什么浮点型用(2^(n-1)-1)而不是(2^(n-1))来作为偏移值呢,比如8位机器数采用127而不是128作为偏移值?

袁春风老师给的解释是阶码11111110以127作为偏移值转化为真值为127

而以128作为偏移值转化为真值为126

可以看出偏移值为127时,真值大一些,也就是可表示范围会大一点。

本来这里我有个疑问是阶码00000001以127作为偏移值转化为真值为-126;而以128作为偏移值转化为真值为-127

这里可以看出当以128位偏移值时真值会更小,也就是小数点后面的数更多。

想了一会后,确实可以说明以127作为偏移值可表示范围会更大,但是以128作为偏移值精确度会更高

 

 

posted @ 2020-01-28 12:08  一颗蘋果  阅读(3819)  评论(0编辑  收藏  举报