最常见的有原码、反码、补码、移码四种编码方式
-
原码
常用来表示浮点数的尾数
最高位是符号位,数值部分用真值的绝对值表示
-
反码
原码的符号位不变,其余各位按位取反,在求补码的过程中会用到反码,纯粹是为了硬件容易实现
-
补码
用来表示定点整数
补码的来源------模运算
- 一个负数的补码等于模数减去该负数的绝对值,当X<0时,[X]=M-|X|=M+X,(这里的M表示模数,[X]表示对X求补码)。
- 对于某一个确定的模,减去一个数,等于加上负数的补码,这使得计算机中的加减法得到统一,可以对比模12的时钟,eg. -8=4(mod12)相当于减8等于加4。
- 求补码的规律,根据上面的公式可以推出来,无论X的正负,-X的补码恰好是X按位取反再加一。比如8位数X=10000001(补码) -X=01111110+1=01111111
-
移码,常用来表示浮点数中的阶码
使用移码的原因,在浮点数加减运算时需要对阶,而浮点数的阶数有正有负,移码可以使阶码变为非负数,简化操作n位移码[X]=2^(n-1)+X ([X]在这里表示X的移码)