我有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?
答案 0 :(得分:1)
问题是计算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
答案 1 :(得分:0)
另外!当指数为全1并且分数与零不同时,另一个答案是NaN(非数字)!