如上图所示,所有变量的负极限都比正极限多一个。我是如何添加额外的一个。我知道变量中的第一个数字用于判断它是负数(1)还是不是(0)。我也知道二进制是基于2的幂。我感到困惑的是,当正面本身不能更高而负面只有一位数变化时,如何有一个额外的。例如,short可以达到32,767(01111111 11111111)或16,383 +它下面的二进制数的所有十进制值。负数是一样的,除了开头的一个,对吧?那么负数如何有更大的限制呢?感谢任何回答的人!
答案 0 :(得分:2)
如果使用二的补码存储整数,那么你会得到一个额外的负值和一个零。如果使用一个补码或带符号幅度存储它们,则得到两个零和负值相同的正值。浮点数有自己的存储方案,在IEEE格式下使用有一个明确的符号位。
答案 1 :(得分:1)
原因是一个名为“2的补码”的方案来表示有符号整数。
您知道有符号整数的最高位代表符号。但你不知道的是,它也代表一个值,负值。
以4位2的补码有符号整数为例:
1 0 1 0
-2^3 2^2 2^1 2^0
这个4位整数被解释为:
1 * -2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0
= -8 + 0 + 2 + 0
= -6
采用这种方案,4位2的补码最大值为7。
0 1 1 1
-2^3 2^2 2^1 2^0
分钟是-8。
1 0 0 0
-2^3 2^2 2^1 2^0
此外,0由0000
表示,1为0001
,-1为1111
。比较这三个数字,我们可以观察到零的“符号位”为正,而且2的补码方案中没有“负零”。换句话说,范围的一半仅由负数组成,但范围的另一半包括零和正数。
答案 2 :(得分:0)
我知道变量中的第一个数字用于判断它是否为负数(1)或者是否为(0)。
第一个二进制数字(或位),是的,假设两个补码表示。这基本上回答了你的问题。有32,768个数字< 0(-32,768 .. -1)和32,768个数字> = 0(0 .. +32,767)。
另请注意,在二进制中,总可能的表示(位模式)是偶数。你不能让绝对值的最小值和最大值相等,因为你最终会得到奇数个可能的值(计数0)。因此,您必须浪费或宣布非法至少一位模式。