原码、反码和补码的概念
原码:
原码就是符号位加上符号为后面的绝对值, 即用第一位表示符号(0表示正,1表示负), 其余位表示值. 比如如果是8位二进制:
+7 = 0000 0111
-7 = 1000 0111
反码:
正数的反码就是其本身,也就是 +7 = 0000 0111(原) = 0000 0111(反)
负数的反码符号位不变,其余位取反 ;
-7 = 1000 0111(原)
-7 = 1111 1000(反)
补码:
正数的补码就是其本身,也就是 +7 = 0000 0111(原) = 0000 0111(反) = 0000 0111(补)
负数的补码是在负数反码的基础上再加1;
-7 = 1000 0111(原)
-7 = 1111 1000 (反)
-7 = 1111 1001(补)
计算机在储存的时候都用原码,计算机在运算时用补码。
举个简单的栗子:
+7 = 0000 0111 -7 = 1000 0111
如果用原码计算 :
0000 0111(+7) +1000 0111(-7)= 10001110(-14)
计算结果是不对的;
用补码计算:
正数的反码和补码都是其本身;
负数的补码就是反码+ 1;
0000 0111(+7)+ 1111 1001 (-7) = 0000 0000 (0)
粗浅理解,如有错处,请指正,谢谢。