原码 反码 补码
先讲个道理:
/
时钟:在一个圆形的时钟中,我们以12点为0点,此时,时间变成了0-11(十二个时刻),这个12称为模
以8位二进制为例,我们可以把0-255看成一个周期(到256时溢出,又从0开始计数),这时的模为256(255+1)
/
这个时钟从0点正着走,走到3点,我们记为3。从0点反着走,走到三点,我们也记为3。我们把正走到3定义为+3,把反走向3定义为-9,他们在指向3这个行为上是等效的,就相当于:
0-9=0-9+12=0+3
以此方法可以把负数的运算改变成正数的运算。在计算机中,补码运算其实就是加模运算,也可以说是模-|负数|
/
计算机中存储和计算都是用的补码
/
- 原码:计算机中存储数以二进制存储,一个数的二进制有符号形式就是它的原码(首位为符号位,正数为0,负数为1,零为零)
- 反码:原码按位取反
- 补码:正数,和原码一样,负数,反码+1(取反加一只是它的算法,并不是它的定义,实际上是模-它的绝对值)