2个二进制补码二进制数之和

Posted

技术标签:

【中文标题】2个二进制补码二进制数之和【英文标题】:Sum of 2 two's complement binary number 【发布时间】:2021-12-22 09:35:55 【问题描述】:

4位加法时我熟悉二进制补码,然后当我面对下面的问题时我很困惑

**在8位输出中求2个补码二进制数010111和110101之和**

以下是我的尝试,但我进退两难,我应该这样做吗

(1)舍弃进位,再加两个0,所以答案是00001100,即十进制的12

谢谢!

(2) 只是在开头加1,所以答案是11001100,也就是十进制的204

【问题讨论】:

最后我把它设为 00010111 + 11110101 = 00001100,我想它可能是正确的 什么是十进制的23 + 53 @beaker 应该是 23 + (-9) = 12,用二进制补码表示 好的,这是个大问题。它说 8 位输出,但原始数字是 8 位还是 6 位?第二个数字是 12 还是 53?在我看来,第二个数字应该是 00110101,但我不是可以为您澄清这一点的人。 原来的数字是6位的,应该提一下,不好意思 【参考方案1】:

对于 8 位二进制补码,您必须反转数字的所有 8 位

据我所知,补码和补码对绝对值进行运算,因此:

二进制数 010111 用 00010111 表示为 8 位

C_1(00010111) = 00010111 xor 11111111 = 11101000

C_2(00010111) = C_1 + 1 = 00010111 + 1 = 00011000

二进制数 110101 用 8 位表示 -> 00110101

C_1(00110101) = 00110101 xor 11111111 = 11001010

C_2(00010111) = C_1 + 1 = 11001010 + 1 = 11001011

现在添加两个补码:

C_2(00010111) + C_2(00010111) = 00011000 + 11001011 = 11100011

如果用符号位搞砸了,请纠正我(我只是将二进制数按 8 位表示)...

【讨论】:

如果你的数字是有符号的,你必须忽略第一位,然后对剩余的 5 in 8 表示进行 2s 补码。

以上是关于2个二进制补码二进制数之和的主要内容,如果未能解决你的问题,请参考以下文章

2 的十进制数的补码,而不将其转换为二进制形式?

补码到底是个什么东西

补码验证

原码反码补码

将十六进制数转换为2的补码。

剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)