原码反码补码转换(原码反码补码怎么算)
在生活中,很多人可能想了解和弄清楚原码反码补码的相关问题?那么关于原码反码补码转换的答案我来给大家详细解答下。
大家知道,计算机只识别加法,那么减法如何计算呢?比如1-1=0。这就借助于补码的功能了,那么补码是什么呢?
说起补码,首先需要说清机器数与真值,继而引发出原码反码补码的一系列知识点。
先说机器数,一个数在计算机中的二进制表示方式,叫做这个数的机器数。机器数都是带符号的,在机器中用最高位存放符号,正数为0,负数为1。比如,十进制中的3,计算机字长为8为,用机器数表示则为00000011;十进制中的-3,用机器数表示则为10000011。
再说真值,因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面有机器数10000011,它代表着-3而不代表131(根据二进制转换得到的十进制数),所以,为区别起见,带符号位的机器数对应的真正数值成为机器数的真值。即10000011的真值为-3,00000011的真值为3。
下面进入重头戏,原码反码与补码。它们都是由符号位和数值位构成,首先来看原码。
1、原码是符号位加真值的绝对值,即用第一位表示符号,其他位表示值,比如是8位二进制,[3]原=00000011,[-3]原= 10000011。第一位是符号位,其他7位是数值位,所以8位二进制的取值范围就是:[11111111, 01111111],即[-127, 127]。 原码是人脑最容易理解和计算的表达方式。
2、反码的表示方式是:①正数的反码是它本身;②负数的反码在其原码的基础上,符号位不变,其他各个位取反。例如[3] = [00000011]原 = [00000011]反; [-3] = [1000011]原 = [11111100]反。可见如果一个反码表示的是负数,人脑无法直接看出它的数值,需要先转变为原码再计算。
3、补码的表示方法是:①正数的补码是它本身;②负数的补码是符号位不变,其他数值位全部取反,然后+1(即在反码的基础上+1)。例如:[3]=[00000011]原 = [00000011]反 = [00000011]补;[-3] = [10000011]原 = [11111100]反 = [11111101]补。
一个很神奇的现象出现了,[11111101]补 = [00000011]补 = [00000000]补 = [0],即 3 + (-3) = 0, 这样就实现了减法(3-3)的效果,不得不佩服前辈们的聪明才智啊。
温馨提示:通过以上关于原码反码补码内容介绍后,相信大家有新的了解,更希望可以对你有所帮助。