对于无符号整数,我们可以表示范围从
0 至 2N- 1
对于像 two 补码这样的有符号整数,范围是
-2(N-1( 至 2(N-1( - 1
如何计算有符号范围?
对于无符号整数:
我们使用所有N
位来表示范围从0 to 2^N - 1
的数字,这是因为如果我们使用所有 N 位位置并通过在每个位置放置0
或1
来计算不同的配置,我们可以得到最大整数2^N - 1
(即11...upto N times
(和最低整数为0
(即00..upto N times
(。因此,可以表示从0
到2^N - 1
的所有值。
对于有符号整数:
这里我们基本上使用N-1
位来表示整数1
位专门用于确定该整数的符号。因此,我们可以表示从-2^(N-1)
到2^(N-1) - 1
的数字。最高有效1
位表示负整数,而最高有效位0
表示非负整数值。在这里,我们可以表示从-1
到-2^(N-1)
的负数,因为我们可以使用所有N
位的数字作为1
。基本上,编译器使用二进制的补码表示来表示整数。
这是交易。让我们做 2 位,所以N=2
.
我们得到Range=-2 to 1
,即它可以表示-2,-1,0,1
。
现在如果N=4
,我们有Range=-8 to +7
.
我不明白你被困在哪里。