【问题标题】:IEEE 754 Floating Point Representation addition sum exceeds places in 16 bit formatIEEE 754 浮点表示加法和超过 16 位格式的位
【发布时间】:2017-04-10 18:10:39
【问题描述】:

我有两个 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如何表示?

【问题讨论】:

  • AFAICT,你不能。你有一个溢出。
  • 如果您遵循 IEEE 754,则结果为正无穷大,0 11111 0000000000

标签: floating-point ieee-754 16-bit


【解决方案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

【讨论】:

    【解决方案2】:

    还有!另一个答案是 NaN(非数字),当指数全为 1 且分数不为零时!

    【讨论】:

    • 这似乎是一个比仅仅断定它变成无穷大更准确的答案!
    猜你喜欢
    • 2013-02-16
    • 2012-01-06
    • 2021-12-14
    • 2012-10-27
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    相关资源
    最近更新 更多