原码:
原码是最直观的机器数表示法,用机器数的最高位表示该数的符号,其余位表示数的绝对值。
正数的原码符号位为0,其余位为数值本身;负数的原码符号位为1,其余位为数值取反加一(实际上是该数绝对值的二进制表示)。
注意,原码中0的表示不唯一,有+0和-0之分。
补码:
补码是在原码的基础上发展而来,目的是为了简化计算机的加法运算。
正数的补码与原码相同;负数的补码是在原码的基础上,符号位不变,其余位取反后加1。
补码中0的表示唯一,解决了原码中0表示不唯一的问题。
补码还具有模运算的性质,即两个补码数相加,若最高位(符号位)有进位,则舍去
该进位,结果仍为补码形式,且正确表示了两个数相加的结果。 反码:
反码通常是作为由原码求补码或由补码求原码的中间过渡形式。
正数的反码与原码相同;负数的反码是在原码的基础上,符号位不变,其余位取反。
注意,反码中0的表示也不唯一,与原码相同。
移码:
移码是在补码的基础上,将符号位取反得到。即正数的移码为其补码符号位变0,负数的移码为其补码符号位变1。
移码主要用于浮点数的阶码表示,以便于判断浮点数的阶码大小(移码大则阶码大,真值也大)。
移码中0的表示也是唯一的。