math - 2个二进制补码二进制数之和
问题描述
我在执行 4 位加法时熟悉二进制补码,然后当我面对下面的问题时我很困惑
** 在 8 位输出中求 2 个二进制补码二进制数 010111 和 110101 之和**
以下是我的尝试,但我进退两难,我应该
(1)舍弃进位,然后加两个0,所以答案是00001100,也就是十进制的12
谢谢 !
(2) 只需在开头加 1,所以答案是 11001100,即十进制的 204
解决方案
对于 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 位)......
推荐阅读
- swift - Swift:无法释放内存
- java - 我们期望 Ignite 什么时候触发 EVT_CACHE_ENTRY_CREATED 和 EVT_CACHE_OBJECT_PUT 事件
- css - 在悬停和聚焦时更改 Mat Expansion 中内容的颜色
- android - 代号一键盘封面图片
- ruby - 如何使用带有 RSpec 模拟的冰糕类型检查?
- python - 我可以在没有服务器回调的情况下更新散景图吗?
- python - 如何在 Python RE 中匹配和替换此模式?
- python - Dash 应用程序错误:没有足够的值来解包(预期 2,得到 1)
- python - 如何解析 CSV 文件并通过多个变量缩小列表范围?
- git - 如何将 git 分支移动到新的仓库?