首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >9位内存位置-符号和大小

9位内存位置-符号和大小
EN

Stack Overflow用户
提问于 2014-01-15 21:27:43
回答 2查看 500关注 0票数 0

因此,我尝试使用符号和幅值来表示9位内存位置中的数字-256。

我的想法对吗,它不会有代表?

例如,使用+256,我看不出负片如何适合下面的内容:

代码语言:javascript
复制
+256 = 256 128 64 32 16 8 4 2 1
        1   0  0   0  0 0 0 0 0

我在想-256对于9位系统来说太大了?

非常感谢

EN

回答 2

Stack Overflow用户

发布于 2014-01-15 22:02:52

很抱歉,我没有完全理解你的设置。我会回答一些“周围”的问题。

如果你的“位布局”很简单:

代码语言:javascript
复制
  9      8       7         6        5           1        0
sign rawvalue rawvalue rawvalue rawvalue ... rawvalue rawvalue

然后使用1+8位,您可以获得以下值:

代码语言:javascript
复制
-255 -254 ... -2 -1 -0 +0 +1 +2 ... +254 +255

因为边缘情况是:

代码语言:javascript
复制
 111111111  ... 100000000 000000000 ... 011111111
   (-255)          (-0)     (+0)          (+255)

请注意,在这种普通编码中,没有像+256这样的。它是+0。当然,你可以用一些聪明的代码来解决这个问题,但在基本思想上,它实际上是+0,因为最左边的1是"sign“位,而rawvalue是0。

注意,数学上是-0,== +0,但它们有不同的符号。这是对一个值的浪费,也会使数学运算复杂化。这是引入two-complement系统的其他原因之一,它允许您使用

代码语言:javascript
复制
   -256    ...    -2        -1         0        +1        +2     ...   +255
100000000 ... 111111110 111111111 000000000 000000001 000000010 ... 011111111

在二的补码系统中,第一位也被称为“符号位”,但负数被明智地编码,而不仅仅是"sign=1“后跟"rawvalue”。在这里,负值是“反转的”。这种编码允许非常简单的数学运算,因为:

代码语言:javascript
复制
  0 - 1 ==> 0  ===>   000000000 - 000000001 ==> 111111111 +underflow,ignored
 -1 + 1 ==> 0  ===>   111111111 + 000000001 ==> 000000000 +overflow,ignored

因此,根据您选择的编码,您永远不会有+256,但您可能有-256可用(二的补码),也可能没有(纯符号)。

(顺便说一句,把纯补码和二进制补码放在一边:当然,你可以采用任何其他编码或以任何你想要的方式编码数字,即。有-11..500或类似的范围,但可能不会有任何明显的“符号”位)

票数 0
EN

Stack Overflow用户

发布于 2014-01-15 22:21:37

-256不能用这种方法表示。要表示256或更高的幅度,需要9位。这就没有空间给符号位留出空间。

您可以使用此方法表示0到255 (包括0和255)的幅度以及符号位。

如果你想表示-256到255,那么使用2's complement

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

https://stackoverflow.com/questions/21138684

复制
相关文章

相似问题

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