我不懂如何计算二进制数的9的补码。我可以将它应用于十进制,例如15 = (9-1)(9-5) ) 84然后我想继续进行二进制-> decimal -> 9的补码->二进制转换,但我猜这不是正确的方法。
发布于 2017-06-02 02:07:47
不知道你是不是还在寻求帮助,我看已经两个月了。但在谷歌首页的任何地方,我都找不到如何在不将二进制转换为十进制的情况下,对BCD (二进制编码的十进制,最多存储在4位,最多1001位)的9表示赞赏。如果你只在二进制模式下工作,比如在算术逻辑单元中,这是行不通的。
在用二进制在纸上搜索了一下9的恭维之后,我找到了答案。
你需要取9 (1001),然后加上你想得到9的4位二进制数的2的恭维:
找9的恭维2 (0010)为例
1. 1's compliment of 0010 = 1101
2. Add 0001 to get the 2's compliment = 1110
3. Add this to 1001 (9) = (1) 0111
This can be tested in decimal: 0111 = 7, and 9 - 2 = 7.
请注意,左侧有一个进位位(1)。这表明最终的答案是肯定的。对于直到9的每9个恭维,此进位位将是1。
9对10及以上的赞美需要一个额外的步骤:你需要根据步骤3的结果再次计算两个人的赞美。在下面的例子中,我计算出了9对13的赞美:
1. 1's compliment of 1101 = 0010
2. Add 0001 to get the 2's compliment = 0011
3. Add this to 1001 (9) = (0) 1100 (note that the carry bit = 0)
4. 1's compliment of 1100 = 0011
5. Add 0001 to get 2's compliment = 0100
In decimal: 9 - 13 = -4.
请注意,左侧没有进位位(0)。这意味着最终的答案是负值:-4。
左边是否有进位位,将决定您是否需要在步骤3进行第二个2的补码计算,以及最终的答案是正值还是负值。
https://stackoverflow.com/questions/43114940
复制相似问题