原码的作用
进行加法运算
但是当进行有符号数之间的加法时,会出现错误。
结果非0,所以便引入补码。
补码的作用
补码是为了让减法操作变为加法操作,减少硬件的成本。
正数的补码为其本身,负数的补码为符号位不变,其余位取反加一。
如何理解补码?
以时钟举例,现在是10点,想要变为3点,可以顺时针旋转5格,记为+5;也可以逆时针旋转7格,记为-7。在此运算里面模为12,5mod12和-7mod12所对应的意义相同,都是将10点变为3点。
由此可以看到,在计算机中,记一个字长为8bit,所以大小为00000000~11111111,由此可以理解模为2^8。
公式:模-a的绝对值=a的补码(a为负数)
例如10001010(-18)的绝对值为00001010(18)
a的补码为反码加1,11110110(-18的补码)
由上述公式可得:
100000000=00001010+11110110
理解补码后,将减法变为加法例如18减去18等于18加上(-18),意义等同于加上-18的补码。
结果本应该为100000000,但是只有8位存储,所以去掉最高位1,结果为00000000。
例子:
48-19=48+(-19)
-19的补码为11101101
去掉最高位得00011101(29)
移码
方便比较大小