小智 5
在2的补码中,当结果是错误符号时发生溢出.
例:
两个正面结果产生负面结果:
01111111 (+127)
+ 00000001 (+ 1)
-------------------
10000000 (-128) <-- overflow (wrong sign)
Run Code Online (Sandbox Code Playgroud)
两个否定结果产生了积极的结果:
11111111 ( -1)
+ 10000000 (-128)
-------------------
01111111 (+127) <-- overflow (wrong sign)
Run Code Online (Sandbox Code Playgroud)
注意:如果添加符号相反的数字,则不会发生溢出.
01111111 (+127)
+ 10000000 (-128)
-------------------
11111111 ( -1)
Run Code Online (Sandbox Code Playgroud)
关于符号,最左边的位是符号位."0"为正,"1"为负.
例:
+------- sign bit
|
v
0xFF = 11111111 = -1
0x80 = 10000000 = -128
0x01 = 00000001 = +1
0x7F = 01111111 = +127
Run Code Online (Sandbox Code Playgroud)
如果最左边的十六进制位为0,1,2,3,4,5,6,或7,那么它是积极的.如果最左边的十六进制位为8,9,A,B,
C,D,E,或F,那么它是消极的.