为什么补码能实现符号位参与运算?

[复制链接]
查看11 | 回复3 | 2012-10-11 13:49:41 | 显示全部楼层 |阅读模式
日常生活中,大家都知道,把时针倒拨20分钟,和正拨40分钟,效果是相同的。-20,就对应了 +40。怎么算的?用 60 减去 -20 的绝对值,即可。----另外,100 以内的数字,减去1,和加上 99,效果也是相同的。比如,27 - 1 = 26,27 + 99 = (1) 26。即 -1,就对应了 +99。怎么算的?用 100 减去 -1 的绝对值,即可。----这些,就体现了《模》与《补数》的概念。利用补数,就可把减法,转换成加法。如果是正数,直接做加法就行,不用费事。----对于负数,要用《模》减去这个负数的绝对值,求出《补数》之后再用于计算。对于正数,就不用变了。----八位二...
回复

使用道具 举报

千问 | 2012-10-11 13:49:41 | 显示全部楼层
补码符号位不参加运算。如果参加运算,两个负数相加,符号位的1相加得10,弃去进位,得到结果是0,成了正数,是不合情理的。补码表示负数,只是提供了将减法转化成加法的一种手段。...
回复

使用道具 举报

千问 | 2012-10-11 13:49:41 | 显示全部楼层
本人认为这个问题是当初的多此一举把人们绕糊涂了。设计补码的初衷就是要表示数据的各位都参与运算,在给定的字长下配合一定的溢出规则来得到正确的结果。你就不要认为有补码存在,比如一字节的十进制26编码是00011010,而-26的编码则是11100110就行了,不要认为11100110是00011010求补码得到的不就好理解了?我们完全可以理解为正负数的编码是不同...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行