b B kb KB

总结了下: (一样事物的产生必有它的道理)

eg: 数值 | 原码 | 反码 | 补码 —–|————|———-|———- 5 | 0 000 0101 |0 000 0101|0 000 0101 -5 | 1 000 0101 |1 111 1010|1 111 1011

计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。
反码的产生是为了解决:正负相加等于0的问题:
补码的产生是为了解决:存在两个0的问题:
    计算机中只有加法器,那5+(-5),如果用原码加的话=1000 1010显然不对
    反码呢 = 1111 1111 取其原码就是-0,可以.
    又出来个问题:0和-0的话:0 000 0000 | 1 000 0000 有两个表示0太浪费了,用补码解决: 0,-0的补码:0 000 0000 正好一样

深入:

回顾下补码的概念:正数的补码还是其原码,负数的补码是其反码再+1.
计算机没有减法,那计算机怎么处理的呢: 模!!!
模: 可以理解为手表的转盘,AM 1点在表上显示1, PM13点显示的话还是1
二进制下,有多少位数参加运算,模就是在 1 的后面加上多少个 0。eg:8bit -> 1 0000 0000
补码的计算机处理:正数还是其本身,负数 -> 模- ABS(负数,模的使用)
在手表(模)12里面: 2+(-4)=10=2+(12-4)=10
所以我们所说的符号位只是便于理解,对计算机来说木有~~~~(>_<)~~~~

从上面的理解来看下-128这个数

按一开始补码的解释:
是不是按那个不好算啊,因为计算机是用模的,下面那种
按后来的:
1 0000 0000(模)-1000 0000(绝对值) = 1000 0000(补码)
那负数=负数的反码取反+1怎么来的
eg:-126,绝对值是01111110, 100000000-01111110=(11111111+1)-01111110=(11111111-01111110)+1,其中(11111111-01111110)正好是取反的步骤