为什么int的范围是-1?

JoC*_*JoC 7 c int numbers range number-systems

我读到int的范围取决于一个字节.

因此将int设为4个字节长,即4*8位= 32位.

所以范围应该是:2 ^(32-1)= 2 ^(31)

为什么有些人说它2 ^ 31 - 1虽然?

谢谢!

Rah*_*thi 6

因为计数从0开始

int的范围是2,147,483,6472 ^ 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'补码.