二进制的源码、反码及补码
关于计算机的源码 反码、补码其实都是越搞越复杂,听课听了很久后逛论坛发现一个帖子写的很好 但是不记得链接了
反正大致意思就是最开始 就没有源码反码补码的概念,
计算机实际上是不会做减法运算的,他所有的计算都是基于加法的,最开始的计算机就是加法机
做的减法运算都是 变成了加上一个数字的负数,,然而计算机怎么表示一个负数叻,,
假如我们有一个八位的计算机,,
他的表示范围为0000 0000---1111 1111
如果要他表示-128-127 还是256个数字
那么计算机会让0000 0000--0111 1111 0-127 表示0-127
而1000 0000--1111 1111 1 128--256表示 -128 --- -1
所以在计算机中的减法运算都是 加上一个负数。
由于整数第一位都是0而负数第一位都是1所以后面就出了一个符号位的概念,,
我们看看下面一组数据
0和-1 0000 0000 1111 1111
1和-2 0000 0001 1111 11110
10和-11 0000 1010 1111 0101
看到这些数据,又因为一些人找出了一些乱七八糟的规律就有了源码反码补码的概念(学这个的时候把我差点搞死!)
他们的二进制码相加正好等于1111 1111 255 由于他们的二进制码正好相反 所以有了个名字 反码
-1 的绝对值1 ,二进制码为0000 0001,他们把他叫做源码,,每位取反1111 1110叫做反码,最后加上1后的1111 1111二级制叫做补码,这个二进制码就是实际上计算机的存值。
感觉学习这个 最开始就应该把自己以前的数学知识全忘掉,把自己当成一台计算机,,那么就能很好的理解计算机减法的原理,,