Chinaunix

标题: 补码的原理 [打印本页]

作者: blackfur    时间: 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;




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2