如上图所示,所有变量都有一个负极限,即比正极限多一个。我是怎么把那个额外的一个加进去的。我知道变量中的第一个数字用来判断它是负的(1)还是如果不是(0)。我也知道二进制是以2的幂为基础的。我不明白的是,当正数本身不能变高,负数只有一个数字变化时,怎么会有一个额外的值。例如,一个空可以上升到32,767 (01111111,11111111)或16,383 +它下面的二进制数的所有十进制值。负数除了一开始是一样的,对吧?那么负数怎么会有更大的限制呢?感谢任何回答的人!

发布于 2015-11-15 04:34:18
原因是有符号整数被称为“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的补码方案中没有“负零”。换句话说,范围的一半只包含负数,但范围的另一半包括零和正数。
发布于 2015-11-15 04:14:01
如果整数是使用二的补码存储的,那么就会得到一个额外的负值和一个零。如果它们使用一个补码或符号大小存储,则得到两个零和与正数相同的负值数。浮点数有自己的存储方案,在IEEE格式下使用有显式符号位。
发布于 2015-11-15 02:03:16
我知道变量中的第一个数字用来判断它是负的(1)还是如果不是(0)。
第一个二进制数字(或位),是的,假设两位的补码表示。基本上回答了你的问题。有32,768个数字<0 (-32,768 )。-1)和32,768个数字>= 0 (0 ..+32 767)。
还请注意,在二进制中,总的可能表示(位模式)是偶数。您不可能在绝对值中的min值和最大值相等,因为您最终会得到一个奇数的可能值(计数为0)。因此,您将不得不浪费或宣布非法至少一位模式。
https://stackoverflow.com/questions/33715563
复制相似问题