可能重复:
什么是"2的补充"?
我知道int32的长度为32位(4字节).我假设它有2 ^ 32个值,但是其中一半需要低于零,我猜它与此有关.我想知道为什么int32具有最大值.正数2 ^ 31 -1.
Tho*_*que 41
这个最高有效位用于编码符号(1表示负数),因此实际值只有31位可用.
Int32.MaxValue = 2^31 - 1 = 01111111111111111111111111111111
1 = 00000000000000000000000000000001
0 = 00000000000000000000000000000000
-1 = 11111111111111111111111111111111
Int32.MinValue = -2^31 = 10000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
Phi*_*ore 13
2 ^ 32约为42亿.这是具有32位(32位数字)的二进制数可以表示的最大VALUES数.
这些值可以是任何范围内的任何值.在UNSIGNED 32位数字中,有效值为0到2 ^ 32-1(而不是1到2 ^ 32,但是相同数量的VALUES,大约42亿).
在SIGNED 32位数字中,32位中的一个用于指示该数字是否为负数.这会将值的数量减少2 ^ 1或减少一半.这留下了2 ^ 31,大约21亿.这意味着现在的范围约为-2亿至21亿.相同数量的值,不同的范围.