计算机中的原码/反码/补码

为什么要学习原码、反码、补码呢?先来认识下计算机中的原码、反码以及补码。

原码

就是二进制定点表示法,即最高位为符号位,“0“表示正,“1“表示负,其余位表示数值的大小。
通过一个字节,也就是8个二进制位来表示7和-7:
7: 00000111(符号位0表示正数)
-7:10000111(符号位1表示负数)

反码

正数反码与其原码相同,负数对其原码逐位取反,但符号位除外;
7的反码: 00000111
-7的反码:11111000

补码

正数反码与其原码相同,负数是在其反码的末位加一;
7的反码: 00000111
-7的反码:11111001

补码相加

	7+(-7):
        	0 0000111
		1 1111001
	       10 0000000 由于一个字节是八位,舍去开头的1.
		0 0000000   得到相加结果为0.

小结

正数的原反补码均相同。
负数根据原码求反码(除符号位外逐位取反)、再根据反码求其补码(末位加一)。
负数根据补码求反码(末位减一)、再根据反码求其原码(除符号位外逐位取反)。
计算机中的加减即是补码之间的加法操作。

关于计算机如何以加法实现减法操作,看到一篇非常好的博文,共同学习,在此附上链接 http://www.cnblogs.com/zhangziqiu/ ,并向大佬致敬。

猜你喜欢

转载自blog.csdn.net/qq_34538534/article/details/84878709