姜咏江
在计算机的浮点数加减运算中需要“对阶”,需要将阶码小的通过尾数向右移位,使两个浮点数同阶,一般要将阶码小的变成大的阶码。尾数右移的位数是一个正整数,是由两个阶码间的“距离”来确定的。
两个数之间的距离是由它们的差的绝对值求出的。限位数表达的机器数之间的距离,可以通过限位数减法得到。例如,8位二进制数的阶码范围是 -128~127,只要用较大的阶码减去较小的阶码,得到的差就是阶码间的距离。-128~127范围内距离最大的是255,例如127-(-128)。
限位数间的距离和它们所表示的有符号数间的距离是一致的。例如,8位的二进制数10101100与01011110在对称制中表示的数是-84与94,01011110>10101100,用
01011110-10101100 = 01011110+01010100,得到的8位结果是10110010,这是一个无符号数,值为178。而-84与94的距离正是178,可见两个限位数的差得到的无符号数就是它们所代表的数值的距离。这种规律总结出如下的定理。
定理:数值大的限位数与数值小的限位数之差得到的无符号数就是两数值的距离。
下面以二进制浮点数加减运算对阶的实例,说明机器数距离的应用。
设有浮点数a×2m和b×2n,m、n是8位二进制数,且m>n;a、b是24位二进制纯小数;对称制下a、b、m、n都可为正负。如令m=00111000,n=10000101,那么m-n是b右移的位数,求法如下:
m-n = 00111000 – 10000101 = 00111000 + 01111011 = 10110011 = 179。
实际上m = 56,n = -123,m-n = 179。也就是要将纯小数b右移179位才能与a做加减法运算,而结果的阶码应是00111000。
2010-7-1
https://wap.sciencenet.cn/blog-340399-340276.html
上一篇:
如何判断机器数的大小下一篇:
中国创新科研者的苦恼