免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1509 | 回复: 0

[算法] 补码的原理 [复制链接]

论坛徽章:
0
发表于 2013-10-27 22:38 |显示全部楼层
比如10进制的3位数运算,先不考虑溢出,即运算结果<=999:
167-52=167+(-52)=167+(999-52)-1000+1=167+947-1000+1=1114-1000+1=114+1=115,该例子中(-52)的补码是999-52=947,167是正数,补码就是自己本身。

以下总结一下操作步骤:
1、将运算转化为加法。
比如001-002转化为001+(-002);

2、将数字分为符号与补码两部分。
+001:符号位为0(0表示正,1表示负)、补码为001,
002:符号位1,补码997;

3、两补码相加,结果分成(进位)与(数值)两部分。
比如001+997:进位0,数值998;

4、(进位)分别与(数值)、(符号)相加。
比如(进位)+(数值):0+998=998,
(进位)+(符号):0+1+0=1(按二进制运算相加取个位,比如1+1+0=0);

5、最后转回原码。
比如符号位1,数值998:-001;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP