真值->原码:符号为正:0、符号为负:1,数值位不变。
原码<->反码:符号位不变,符号为正数值位不变;符号为负数值位取反。
原码<->补码:符号位不变,符号为正数值位不变;符号为负数值位取反加1。
补码<->移码:符号位取反。
[x]补<->[-x]补:符号位取反、数值位取反加1。
原码和反码的真值0有两种表示:+0,-0;补码和移码的真值0只有一种表示。
若机器字长为n+1位,则:
原码和反码——整数表示范围:-(2^n -1)<=x<=2^n -1;小数表示范围:-(1-2^-n)<=x<=1-2^-n;
补码——整数表示范围:-2^n<=x<=2^n -1;小数表示范围:-1<=x<=1-2^-n;(比原码和反码多表示一个-1)
移码——整数表示范围:-2^n<=x<=2^n -1;移码全0真值最小,移码全1真值最大。(移码只能用于表示整数)
补码可让减法操作转变为加法操作,ALU中无需集成减法器。执行加法操作时,符号位也一起参与运算。
移码表示的整数方便对比大小。