计算机用补码记录负数,-7的记录是1111 1001(8位有符号字节),而不是1000 0111。
-7=
1000 0111原
1111 1000反
1111 1001补
正数的补码就是其本身,
负数的补码是除符号位取反再加1。
在计算机中,有符号字节8bit 如下
正数
0000 0000-0
0000 0001-1
0000 0010-2
0000 0011-3
负数
1111 1111~-1=-(0+1)
1111 1110~-2=-(1+1)
1111 1101~-3=-(2+1)
1111 1100~-4=-(3+1)
正数的大小看1的位置,这个是常识。
新大陆是负数的绝对值的大小:看0的位置,先把0看做正数中1的位置,会得到一个正数,然后加1,最后加个负号,就是负数的大小。
这就解释了同样的n位bit,其表示的数值范围,负数总比正数多一个。