Hex加法溢出检测

时间:2014-03-04 22:41:34

标签: hex

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

仅使用8位二进制补码操作。

0xFF + 0x1

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

1 个答案:

答案 0 :(得分:5)

在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) 

关于标志, 最左边的位 是符号位。 &#34; 0&#34; 是积极的 &#34; 1&#34; 是否定的。

示例:

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

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

相关问题