机器数与它的三种表示法 钟乐海 1995-09-29 机器数在计算机中的表示方法有三种,即原码、反码和补码,最常用的是原码和补码两种,原码表示法比较直观,补码运算则比较简单。下面分别从其定义出发来理解这三种表示法及其关系。 原码表示法是一种直观的机器数表示法,用最高位表示符号,符号位为0表示该数为正,符号位为1表示该数为负,有效数值部分用二进制绝对值表示。如真值为+0.1010和-1100其原友码为0.1010和11100。用原码作乘除法时,可取其绝对值(尾数)直接运算,再按同号相乘除为正,异号相乘除结果为负的原则单独处理符号,但对常用的加减法运算,却极不方便,由此引进补码的概念。 补码是让数的符号位也作为数的一部分参与运算,使实际操作仅与指令规定的操作性质有关,而与数的符号无关。即确定一个数作模以后,我们将某数X对模M的补数称为X的补码,表示为[X]补=M+X (Mod M),正数的补码与原码一样,但是是舍去了模。如x=0.101,[x]补=0.101 (mod 2),对于负数,补码的尾数与原码不同,其符号位在形式上与原码相同,也用1表示负数,但这个1是通过模获得的,也是数值的一部分,可与尾数一起参与运算,如x=-0.101,则[x]补=2+(-0.101)=1.011 (mod 2)。 对补码的求值,一般是通过原码转化而来。对正数,[x]原=[x]补,对负数,是符号位保持不变,尾数各位变反,然后末位加1,即“变反加1”。如:[x]原=1.1010,则[x]补=1.0110。 在补码和原码的转换中,又产生一种机器数的表示法,这就是仅对尾数逐位取反而不在末位加1,这种数的表示法称反码表示法,它可以达到化减为加的目的。正数反码与原码、补码相同,负数反码的符号位为1,其尾数可由其绝对质逐位反而得,符号位也参与计算。具体表示为:x=0.101,x反=0.101;x=-0.101,x反=1.010。 从上面的三种机器数的表示中,可以看出它们的转换比较简单,主要掌握原码和补码的表示即可。 (钟乐海)