正数的原码,反码,补码都是一样的。
负数的原码你应该知道的,就是带符号位的二进制数。反码,符号位不变为1,其他每位二进制数取反,1变0,0变1.补码就是在反码的基础上,符号位不变,最低位加1,得到补码。这里有个简单的求补码的方法,从原码的最低位向最高位看去,遇到第一个1前,保持不变,第一个1前面的二进制串取反(符号位保持不变)。
下面是一个例子。
x=1011
0110
这是一个负数,它的原码,反码,补码分别是:1011
0110,1100
1001,1100
1010
用上面的那个简单的方法就可以一步写出来了。
有关更详细的原理,可以交流一下。
补码是计算机内方便加法运算的编码。注意,为了方便运算计算机采用补码存储数据。
例如100(10进制)
100/16=6余4
6/16=0余6
所以100的16进制数是64H
以8位二进制来说64H=01100100B
正数的补码和原码相同。所以100的补码还是01100100
另假设还有个数是-109
109的16进制是01101101
-109的原码就是11101101(首位是符号位)
-109的反码就是10010010(除了符号位其他各位分别取反)
-109的补码就是10010011(反码加1)
现在运算100-109=100+(-109)
01100100+10010011=11110111
这个结果就是-9的补码。如果换成其他编码运算就不会这么简单了。例如原码相加的话存在符号位进位的问题等等。对于计算机而言。数值的计算补码是最方便的。
版权声明:本站部分文章来源互联网,主要目的在于分享信息,版权归原作者所有,本站不拥有所有权,不承担相关法律责任,如有侵权请联系我们,本站将立刻删除。