JoC*_*JoC 7 c int numbers range number-systems
我读到int的范围取决于一个字节.
因此将int设为4个字节长,即4*8位= 32位.
所以范围应该是:2 ^(32-1)= 2 ^(31)
为什么有些人说它2 ^ 31 - 1虽然?
谢谢!
因为计数从0开始
int的范围是2,147,483,647和2 ^ 32,即2,147,483,648.因此我们减去1
1位的丢失也是正负号
检查这篇关于整数的wiki文章的兴趣: -
正整数的最常见表示是使用二进制数字系统的一串位.存储位的存储器字节的顺序是变化的; 看到字节序.整数类型的宽度或精度是其表示中的位数.具有n位的整数类型可以编码2n个数字; 例如,无符号类型通常表示非负值0到2n-1.有时使用对位模式的整数值的其他编码,例如二进制编码的十进制或格雷码,或者诸如ASCII的打印字符码.
在二进制计算系统中有四种众所周知的方式来表示有符号数.最常见的是二进制补码,它允许带有n位的有符号整数类型表示从-2(n-1)到2(n-1)-1的数字.二进制补码算法很方便,因为表示和值之间存在完美的一对一对应关系(特别是没有单独的+0和-0),并且因为加法,减法和乘法不需要区分有符号和无符号类型.其他可能性包括偏移二进制,符号幅度和1'补码.