C语言拾遗

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 - 绝对值原码。

      

你可能感兴趣的:(C)