1.原码(十进制的二进制表示形式)
字长:CPU一次能并行处理的二进制位数
比如八位字长,第一位是符号位:
如+3=00000011 -3=10000011
2.反码(为解决的是原码负数计算不方便的问题)
正数的反码不变,负数的反码符号位不变,其余位取反;
例如:00000001[原]=00000001[反];10000001[原]=11111110[反]
3.补码(相当于原码的反码+1的效果,解决的是反码跨零运算存在两个零的问题,跨零运算时不会有误差)
补码的表示方法是:
正数的补码就是其本身;
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)
[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补
注:正数的反码和补码都和原码相同
用反码计算,如果最终的结果划0了,就会有误差
-0 10000000[原] 11111111[补]
+1
+0 00000000[原] 00000000[补] (溢出)
即跨0就会有误差,有一个误差,将最终结果再加上一个1即可
注:-128是个特殊的数字