1、原码
是一种直观的机器数表示形式,即用最高位表示符号,符号位为0表示该数为正,为1表示该数为负;有效数值部分则用二进制绝对值表示。
原码表示很直观,若采用原码作乘除运算,可取其绝对值直接运算,并按同号相乘除取正、异号相乘除取负的原则,单独处理符号位,因此较方便。但原码作加减运算时,其运算规则较复杂。
2、补码
补码的最高位是符号位,在形式上同于原码。
正数的补码表示在形式上同于原码;而负数的补码则不同于原码。
可用数轴形式表示补码的表示范围与代码组合。
x = +0110, y=-0110
[x]补 = 00110
[y]补 = 2^5 - 110 = 100000 - 110 = 11010
正数的补码就是其本身,形式上与原码相同,负数的补码形式与其原码形式不同,虽然其符号位在形式上与原码相同,都是用1表示负,但是它是值的一部分,可直接参与运算。
多数计算机在处理负数的原码表示转换为补码时,通常采用的是“变反加1”,符号位保持为1,其余各位变反,并在末位加1。
原码和补码的正数表示范围都是0~(2^n-1),但负数的原码范围是-(2^n -1) ~ 0,而负数的补码表示范围是-2^n ~ -1。
3、反码
x = +0110, y=-0110
[x]反 = 00110
[y]反 = (2^5 - 1) - 110 = 1111 - 110 = 11001
在反码表示中,最高位为符号位,0表示正,1表示负,这点与原码及补码相同。但应指出,在反码符号位是通过运算得到的(类似与补码),它是数值的一部分可直接参与运算。
负数的原码表示转换位反码时,符号位保持为1,其余各位变反。