0

所以这是我教科书中的问题之一,我们还没有到那里,但我对这一切是如何运作的很感兴趣,

对于这里的第一点,我对补码的理解是翻转,所以在有 1 的地方放 0,在有 0 的地方放 1。这必须是 8 位,所以我在开始时在二进制中添加了一个零 Therefre 01001001 写下 +73 的以下二进制表示:

8-bit unsigned: 01001001
8-bit signed-magnitude: 01001001
8-bit one's complement: 10110110
8-bit two's complement: 10110111
8-bit excess-128: 10110111

这些是我想出的答案,但我很确定我做错了。对此有何澄清?

其次,我到底是如何用负数来做的,所以-73,二进制文件只是-01001001,所以我认为这是有符号的,你是否使用与上述相同的技术(假设我得到了正确的)

8-bit signed-magnitude: -01001001
8-bit one's complement: 
8-bit two's complement: 
8-bit excess-128: 

提前感谢您的帮助

4

1 回答 1

1

+73 在您命名的所有表示中都是 01001001,除了excess-128。超过 128 为 11001001(加 128)。正数的符号幅度、一个的补码和二进制的补码都相同,只有负数不同。这些表示中的 -73 值为:

8-bit sign magnitude   11001001
8-bit one's complement 10110110
8-bit two's complement 10110111
8-bit excess-128       00110111

一个补码“翻转所有位”是您如何在一个补码表示法中否定一个数字。因此,如果您有 n,要获得 -n,您将翻转所有位。

“翻转所有位并加 1”是您否定二进制补码中的数字的方式。

二进制补码和二进制补码都有一个奇数。对于一个补码是 -0(所有位都设置),这实际上与 0 相同 - 或者您可以将其视为无效和特殊情况否定 0。对于二进制补码,即 -2^(n-1) -- 128 表示 8 位 - 这是一个由于溢出而对自身取反的数字。

于 2013-03-01T06:56:55.170 回答