1.原码
原码即符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.
这个对于二进制的计算非常重要
举个例子(比如说一个四位二进制)
+1:0001
-1:1001 此时1001表示的数字为-1,而不是9
2.反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
(所谓取反就是1->0, 0->1)
+1:0001
-1:1110
3. 补码
正数的补码就是其本身
反码+1
+1:0001
-1:1111
所以这三个玩意现在只是知道了概念,我们发明这些概念到底要干什么呢?
这就涉及到二进制的计算了。
二进制的简单计算
举个例子,
1+1=(0001)+(0001)=(0010)=2
1-1=1+(-1)=(0001)+(1001)=-2
此时可以看到,我们的计算出了问题,也就是说
使用原码只有加法算出的结果是正确的,而减法就会出错
于是一些聪明的人类发明了反码
1+1=(0001)+(0001)=(0010)=2
1-1=1+(-1)=(0001)+(1110)=(1000)=-0
结果正确了,可是0的前面多出了负号
+0,-0,同样是0,现在却有正负之分,所以又有一些聪明的人类发明了反码 我怀疑是同一批人
1+1=(0001)+(0001)=(0010)=2
1-1=1+(-1)=(0001)+(1111)=(10000)=(0000)=0
这回就对起来了。
所以此时我们可以进行一些简单的计算了。(菜鸡的学习笔记,有错希望能指出)
更深入的讲解可以看这位大佬的,链接在这里
作者: 张子秋
出处: ziqiu.zhang - 博客园