1的原码 0000 0000 0000 0001 正数的原码、反码、补码都是一样的
-1的原码 1000 0000 0000 0001
-1的反码 1111 1111 1111 1110
-1的补码 1111 1111 1111 1111
-1 + 1 = 0000 0000 0000 0000 即 0
-1 +1就是-1的补码+1的补码 即为0
原因:
十进制数字1 的二进制表现形式:0000 0000 0000 0001
数字有2个字节= 16个bit
二进制的正负表现形式:
如果是正数 第一个bit就是0
即1的二进制是 0000 0000 0000 0001
如果是负数 第一个bit就是1
即-1的二进制是 1000 0000 0000 0001
-1+1 应该= 0
在二进制里面(1000 0000 0000 0001 + 0000 0000 0000 0001 =1000 0000 0000 0010
而1000 0000 0000 0010换成十进制是2 即-1+1=2 ??
其实这样算是错误的,应该是补码加补码 即最前面的算法。
-1的补码 1111 1111 1111 1111
1的补码 0000 0000 0000 0001(正数的原码、反码、补码都是一样的)
-1 + 1 就是 1111 1111 1111 1111 + 0000 0000 0000 0001 = 0000 0000 0000 0000 也就是 0
还有二进制里面没有减号