为什么整数在内存中用补码表示,而不用原码和反码

 我来答
lilipat
高粉答主

2017-04-24 · 每个回答都超有意思的
知道大有可为答主
回答量:3万
采纳率:94%
帮助的人:5023万
展开全部
为什么整数在内存中用补码表示,而不用原码和反码?

用补码存储整数,便于将两个数相减统一到加法中,保证结果是 正确的,因为 CPU 中只有加法器而无减法器。另外, 0 的补码形 式唯一,而其原码和反码都可以有两种表示,用两个不同的二进 制序列表达同一个整数,显然也是不合理的。 运算统一性举例:求 -2-3 ,即( -2 ) + ( -3 ) -2 的原码: 1000000000000010 -3 的原码: 1000000000000011 相加结果: 1 0 000000000000101 此结果中, 1 为多余位舍弃, 0 为符号位,因此计算结果为 +5 , 与实际不符合 -2 的反码: 1111111111111101 -3 的反码: 1111111111111100 相加结果: 1 1 111111111111001 此结果中, 1 为多余位舍弃, 1 为符号位,余下的 15 位取反再加 1 得到: 000000000000111 ,即绝对值为: 7 ,因此计算结果为 -7 ,与实际不符合 -2 的补码: 1111111111111110 -3 的补码: 1111111111111101 相加结果: 1 1 111111111111011 此结果中, 1 为多余位舍弃, 1 为符号位,余下 15 位取反再加 1 得到: 000000000000101 ,即绝对值为 5 ,因此答案为 -5, 是正 确的 在计算机应用基础课程或微机原理课程中,都有形式化的公式来 描述这种运算关系,这里只是通过一个特例来验证以补码形式存 储整数减法可理解为加上一个负数,对得到的结果我余进位舍 去,所得到的结果仍按补码理解就是正确的了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式