在大多数整数数据类型具有有限范围的编程语言中,负数总是比正数多一个。
例如,在C中,一个字节是-128~127,一个int是在-2^31和2^31-1之间(包括-2^31和2^31-1)。 由于直觉上正数出现的频率更高,所以一个字节不是-127~128,是否有原因?
最佳答案
最大的正数是0111 1111 = 127
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
最大负字节为1000 0000 = -128
-128| 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
在二进制中,MSB(最高有效位 - 前面的一位)被保留以表示负数。这个概念叫做 Twos' Complement大多数计算机都使用它作为以二进制(基数 2)表示法表示整数的一种方式。
要获取更多信息,请查看二进制计算
关于computer-science - 数值原始数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215786/