在 8086 中表示 -130 的最少位数?

Minimum no of bits to represent -130 in 8086?

我需要知道表示 130-130[=25= 所需的 最小 位数] 在 8086.

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

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

取一个数的补码时,必须

  • 在左边放置无数个 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 位寄存器。