我有两个16位二进制表示法的浮点数,当我尝试添加它们时,我偶然发现了一个问题:

A = 0  11110  1111000000
B = 0  11010  1101110000


现在我要尝试使用A + B,但这是我的问题。如何用16位格式表示总和?

A = 63488

B = 3808

A + B = 67296

可以适合IEEE 754表示法的16位的最大十进制数是65504,表示为:

MAX = 0 11110 1111111111 = 65504


我如何代表67296?

最佳答案

问题是要为以下内容计算A+B

A = 0  11110  1111_0000_00
B = 0  11010  1101_1100_00


使前一位明确,并调整为相同的指数:

A = 0  11110  1.1111_0000_00
B = 0  11110  0.0001_1101_11


新增:

A + B = 0  11110  10.0000_1101_11


规范化,忽略指数溢出:

A + B = 0  11111  1.0000_0110_111


四舍五入到最接近,但仍忽略指数溢出:

A + B = 0  11111  1.0000_0111_00


四舍五入后的指数太大,无法存储为正常数字。总和为正,因此结果为正无穷大:

A + B = 0  11111  0000_0000_00

08-16 07:26