Floating point IEEE 754浮点表示加法和超过16位格式的位数

Floating point IEEE 754浮点表示加法和超过16位格式的位数,floating-point,ieee-754,16-bit,Floating Point,Ieee 754,16 Bit,我有两个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

我有两个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  1.0000_0110_111
A + B = 0  11111  1.0000_0111_00
舍入后的指数太大,无法作为正常数字存储。总和为正,因此结果为正无穷大:

A + B = 0  11111  0000_0000_00

还有!另一个答案是NaN(不是数字),当指数都是1且分数不同于零时

抱歉,你不能。您有一个溢出。如果您遵循IEEE 754,结果是正无穷大,
0 11111 0000000000
这似乎是一个更准确的答案,而不仅仅是得出它变为无穷大的结论!