【发布时间】:2018-05-26 15:32:17
【问题描述】:
我对二进制算术有点陌生,我做了一个关于二进制减法的练习。我有一个解决方案,但它......不完全正确。 (考虑两个无符号位!)
任务是:00101 - 11101
第一步是在11101上使用二进制补码,我们得到:00010和一个补码,然后我们加一个得到00011,现在我们可以将数字相加得到:01000。
当我将 01000 转换为“返回”时,我得到 24,所以数字 01000 应该是 -24,但为什么最左边的位置没有 1?正确的解应该是:101000(书上的解),但是我们要计算什么才能得到这个解呢?
二进制补码00011不正确吗?如果我们将 00011 和 11101 相加,我们得到 00000,所以 00011 应该是正确的。
【问题讨论】:
-
如果两个原始数字都是正数,那么您在取二进制补码时忘记扩展符号位。尝试将两个值都设为 8 位(甚至 6 位),然后重新计算两者的补码。