在8086中代表-130的最小位数?

时间:2015-02-18 09:12:15

标签: assembly binary hex x86-16 negative-number

我需要知道在8086中代表 130 -130 所需的最小位数。

  • 130(已签名): 这将是无符号的,因此它通常表示。 130 = 0x82 = 1000 0010b 在这种情况下,答案将是 8位
  • 对于-130(带符号):8086中的负数是有符号数的第二个补码加1.因此,第一个补码(不是0x82):0111 1101b和加1它将是0111 1110b = 0x7E。在我的观点中,您需要 7位最小来表示-130。 这是正确的吗?如果数字为负数,那么最后一位是否应该知道该符号为负数?这将需要超过7位。

如果有人确切知道答案,请告诉我。

1 个答案:

答案 0 :(得分:1)

当取一个数字的两个补码时,你必须

  • 向左侧放置无限数量的0位
  • 反转所有位
  • 添加1
  • 如果需要,删除一些无限数量的1位

让我们将其应用于数字-130。 130的位模式是

1000 0010

在左侧放置无限数量的0后

0000 0000 1000 0010

好的,所以八点略低于无穷大,但你明白了。接下来反转得到

1111 1111 0111 1101

并添加1以获取

1111 1111 0111 1110

此时你可以删除左边的一些无限1,但你必须至少保留其中一个。因此,-130的最短二进制补码表示需要9位。

1 0111 1110

如果问题是x86处理器上需要什么大小的寄存器,则答案是16位寄存器。