我有两个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