int型的位数和机器是相关的,假设int型是8位的
则有符号数的取值范围是
-128~127
从二进制上看:
10000000-128
10000001 -127
......
11111111 -1
00000000 0
00000001 1
00000011 3
......
011111111 128
除去-128和0这两个数,其他的数的实际的二进制标识,除掉第一位后,其实是按照倒叙完全一致的,也就是
-127= 1 (去掉符号位)
.....
127= -1
这个规律按照负数存储的规则,即绝对值按位取反再加一,可以推导出来的。
假设整数用8位来表示,那么一个整数和把它取按位取反后得到的数相加,应该就是2^8-1,所以2^8 = 负数的补码 + 绝对值原码,又由于负数第一位标识符号位,减掉符号位2^7,则变成 负数的补码(去掉符号位)= 2^7 - 绝对值原码。