首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么变量中的负数比正数(有符号变量)有更大的限制?

问为什么变量中的负数比正数(有符号变量)有更大的限制?
EN

Stack Overflow用户
提问于 2015-11-15 01:54:50
回答 3查看 2.5K关注 0票数 0

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

​

​

EN

回答 3

Stack Overflow用户

发布于 2015-11-15 04:34:18

原因是有符号整数被称为“2的补码”。

您知道,有符号整数中最重要的部分表示符号。但你不知道的是,它也代表一个值,一个负值。

以4位2的补码有符号整数为例:

代码语言:javascript
复制
1     0    1    0
-2^3  2^2  2^1  2^0

这个4位整数被解释为:

代码语言:javascript
复制
  1 * -2^3  +  0 * 2^2  +  1 * 2^1  +  0 * 2^0
= -8 + 0 + 2 + 0
= -6

使用该方案,4位2的最大补数为7.

代码语言:javascript
复制
0     1    1    1
-2^3  2^2  2^1  2^0

最小值是-8。

代码语言:javascript
复制
1     0    0    0
-2^3  2^2  2^1  2^0

另外,0由0000表示,1表示为0001,-1表示为1111。比较这三个数字,我们可以看到,零有其“符号位”正,而在2的补码方案中没有“负零”。换句话说,范围的一半只包含负数,但范围的另一半包括零和正数。

票数 3
EN

Stack Overflow用户

发布于 2015-11-15 04:14:01

如果整数是使用二的补码存储的,那么就会得到一个额外的负值和一个零。如果它们使用一个补码或符号大小存储,则得到两个零和与正数相同的负值数。浮点数有自己的存储方案,在IEEE格式下使用有显式符号位。

票数 2
EN

Stack Overflow用户

发布于 2015-11-15 02:03:16

我知道变量中的第一个数字用来判断它是负的(1)还是如果不是(0)。

第一个二进制数字(或位),是的,假设两位的补码表示。基本上回答了你的问题。有32,768个数字<0 (-32,768 )。-1)和32,768个数字>= 0 (0 ..+32 767)。

还请注意,在二进制中,总的可能表示(位模式)是偶数。您不可能在绝对值中的min值和最大值相等,因为您最终会得到一个奇数的可能值(计数为0)。因此,您将不得不浪费或宣布非法至少一位模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33715563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档