2、现需设计实现某型浮点计算机,约定其浮点数字长为 16 位,其中:阶码 6 位, 含 2 位阶符;尾数 10 位,含 2 位数符,补码表示,规格化表达。若现有两个十 进制数据:A=13/128,B=7/64,求 A+B 和 A-B 浮点数形式,最后结果要求规 格化且用十六进制表示
时间: 2023-06-27 15:05:26 浏览: 97
首先,将十进制数转换为二进制数:
$$
A = \frac{13}{128} = 0.00001101_2\\
B = \frac{7}{64} = 0.000111_2
$$
由于规格化要求尾数最高位为1,因此需要将A和B乘以2,得到:
$$
A = 0.0001101_2 \times 2^{-1}\\
B = 0.00111_2 \times 2^{-2}
$$
接下来,计算A和B的阶码:
$$
A = 1.101_2 \times 2^{-4},\quad exp_A = -4 + 2^{(6-1)-1} + 1 = 26_{10} = 1A_{16}\\
B = 1.11_2 \times 2^{-3},\quad exp_B = -3 + 2^{(6-1)-1} + 1 = 27_{10} = 1B_{16}
$$
其中,exp为阶码,(6-1)表示阶码的位数,+1是因为阶码需要考虑阶符占据的一位。
然后,计算A和B的尾数,注意尾数的最高位是1,因此在计算时需要减去1:
$$
A = 1.101_2 \times 2^{-4} = 1.101_2 \times 0.0625_{10} = 0.06875_{10} = 0.0AE_{16}\\
B = 1.11_2 \times 2^{-3} = 1.11_2 \times 0.125_{10} = 0.21875_{10} = 0.37_{16}
$$
接下来,计算A+B和A-B的十进制值:
$$
A + B = 0.06875_{10} + 0.21875_{10} = 0.2875_{10} = 0.121_{16}\\
A - B = 0.06875_{10} - 0.21875_{10} = -0.15_{10} = -0.0C_{16}
$$
最后,将A+B和A-B的十六进制值规格化为浮点数形式:
$$
A + B = 1.21_2 \times 2^{-2},\quad exp = -2 + 2^{(6-1)-1} + 1 = 27_{10} = 1B_{16}\\
A - B = 1.1_2 \times 2^{-4},\quad exp = -4 + 2^{(6-1)-1} + 1 = 26_{10} = 1A_{16}
$$
因此,A+B的浮点数形式为:0x1B210000,A-B的浮点数形式为:0x1A100000。
阅读全文