原码反码补码的计算方法
Posted lylhome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原码反码补码的计算方法相关的知识,希望对你有一定的参考价值。
原码反码补码具体的讲解可以看看这篇:https://blog.csdn.net/afsvsv/article/details/94553228
总结一下计算方法
对于a-b,
首先,将a、b转换成二进制数,这时候的二进制数是无符号的。计算a无 - b无
原码:将无符号数首位当成符号位,正数置为0,负数置为1。这里要注意b的大小不应该超过原码可以表示的范围,否则转换出来的原码是错误的。计算a原+b原
反码:在原码的基础上,将函数的非符号位取反,符号位不变。计算a反+b反
补码:在反码的基础上,负数加1,正数不变;
或者在原码的基础上,对符号位后面(n-1)位的数字取模(假如后面(n-1)位表示数值,那么模为2^(n-1),用二进制表示就是首位1跟着n-1个0)
这里的模就是mod后面的那个数,C的计算符是%
比如,a=3,b=5,计算a-b
转换成二进制无符号数a无=0101,b无=0111,这时仍要计算0101 - 0111(不要计算结果,是错误的)
转换成原码a反=0101,b反=(-0111)=1111,这时要计算0101+1111(不要计算结果,是错误的)
转换成补码a补=0101,b补=1001,这时计算0101+1001=1110(这是a-b的补码表示,转换成原码是1010,即-2,正确)
以上是关于原码反码补码的计算方法的主要内容,如果未能解决你的问题,请参考以下文章