【问题标题】:Hex Addition Overflow detection十六进制加法溢出检测
【发布时间】:2014-03-04 22:41:34
【问题描述】:

我正在尝试检测十六进制算术是否会导致溢出。

仅使用 8 位二进制补码符号运算。

0xFF + 0x1

但首先,我无法确定十六进制数字是负数还是正数。

【问题讨论】:

    标签: hex


    【解决方案1】:

    在 2 的补码中,当结果为错误符号时会发生溢出。

    示例:

    两个阳性产生一个阴性结果:

      01111111  (+127)  
    + 00000001  (+  1)  
    -------------------
      10000000  (-128) <-- overflow (wrong sign)
    

    两个否定产生一个肯定的结果:

      11111111  (  -1)
    + 10000000  (-128)    
    -------------------
      01111111  (+127) <-- overflow (wrong sign)
    

    注意:如果将符号相反的数字相加,则不会发生溢出。

      01111111  (+127)   
    + 10000000  (-128)    
    -------------------
      11111111  (  -1) 
    

    关于符号,最左边的位是符号位。 “0” 为正 "1" 是负数。

    示例:

           +------- sign bit
           |
           v
    0xFF = 11111111 =   -1
    0x80 = 10000000 = -128
    0x01 = 00000001 =   +1
    0x7F = 01111111 = +127
    

    如果最左边的十六进制数字是01234567, 那么它是积极的。如果最左边的十六进制数字是89ABCDEF,则为负数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      • 2012-05-27
      • 2016-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多