Skip to content

补码运算

正数的补码是原码。负数的补码是原码基础上,保留符号位,其余各位取反最后再加1。

举例:
-5-3

-5
原码 1000 0101
取反 1111 1010
加一 1111 1011

-3
原码 1000 0011
取反 1111 1100
加一 1111 1101


相加 1111 1000 (-8的补码)
减一 1111 0111
取反 1000 1000 (-8的原码)


-1
原码 1 0000 0001
补码 1 1111 1111

0,补码 0

Integer.MIN_VALUE= 1000 0000 0000 0000 ... = -2^32
结果是原码。
Integer.max = 01111.... = 2^32-1