按机器补码浮点运算步骤计算[x+y]补,x=2⁻⁰¹¹×0.10110,y=2⁻⁰¹⁰×(0.011100)
首先将x和y转化为机器补码浮点数:
x = 0 01111010 10110000000000000000000
y = 0 01111011 01110000000000000000000
其中,符号位为0,阶码为01111010和01111011,尾数为10110000000000000000000和01110000000000000000000。
接下来进行规格化,将尾数左移或右移,使得第一位为1。因为阶码中心为127,所以阶码减去127后得到的是尾数的位移量。因此:
x = 1.01100000000000000000000 × 2⁻⁶
y = 1.11000000000000000000000 × 2⁻⁵
接着进行加法运算,先将阶码对齐,再将尾数相加。由于x的阶码小于y的阶码,需要将x的尾数右移一位,同时阶码加1,得到:
x' = 1.01011000000000000000000 × 2⁻⁵
y' = 1.11000000000000000000000 × 2⁻⁵
x'和y'的阶码相同,尾数相加得到:
x' + y' = 11.00011000000000000000000 × 2⁻⁵
结果为规格化的浮点数,阶码为01111011,尾数为00011000000000000000000。因此,[x+y]补为:
0 01111011 00011000000000000000000
用补码一位乘计算x·y,x=0.110111
假设用补码表示的二进制位数为n,则x的补码为x补 = 1 110111,因为x为负数,所以符号位为1。
对于一位乘法,可以先将y的最低位与x的每一位相乘,然后将结果相加。这里假设y的最低位为1,则有:
111011
这里的结果为5位二进制数,但是只需要考虑后n位,即:
11101
将结果转化为补码,并加上符号位,得到:
1 111101
因此,x·y的补码为1 111101,即-0.01101。