如果将操作数转换为二进制补码,则不必关心操作数的符号。
比较指数并相应地将数字的尾数与最小指数对齐,同时添加隐藏位
把数字变成二进制补码。这需要在尾数左侧有一个额外的位来考虑符号位和另一个位来处理加法溢出。结果,负数将由数字 $gt; 表示。2,即它们的绝对值与 2^3 的补数。请注意,两个最高有效位始终相等。
执行添加。
检测溢出。如果结果的两个最高有效位不相等,则存在溢出。在这种情况下,您必须对结果进行算术右移并增加指数。
检测下溢。如果 point 左边的三位数字相等,则存在下溢。在这种情况下,执行左移直到这三个数字不同或点右侧的所有位都为空,并相应地调整指数。
四舍五入
从二进制补码返回符号绝对值表示,并根据其 MSB 确定结果的符号。
例子:
A=1.1 B=-1.1 2^-1
1. alignment. Numbers are extended to 6 bits right of point.
A=+1.100000
B=-0.110000
2. two's complement
A=001.100000
B=2C(000.110000)=111.010000
3 addition
A 001.100000
+B 111.010000
= 000.110000
4 overflows none
5 underflows: shift result left 1 step and decrement exponent
001.100000 2^-1
6 rounding
001.100 2^-1
6 back to sign absolute value
+ (1.)100 2^-1
另一个否定结果的例子
A=1.01 B=-1.1
1. alignment. Numbers are extended to 6 bits right of point.
A=+1.010000
B=-1.100000
2. two's complement
A=001.010000
B=2C(001.100000)=110.100000
3 addition
A 001.010000
+B 110.100000
= 111.110000
4 overflows none (none overflow can happen if signs are different)
5 underflows: shift result left 2 steps and decrement exponent by 2
111.000000 2^-2
6 rounding
111.000 2^-2 (<0)
6 back to sign absolute value
-(1.)000 2^-2