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个二进制补码二进制数之和的主要内容,如果未能解决你的问题,请参考以下文章