为什么要用移码来表示阶码(指数)呢?
为什么要用移码来表示阶码(指数)呢?
这是为了方便浮点数在进行加减运算时进行对对阶操作,也就是比较大小
比如(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作为偏移值精确度会更高