各种数据在计算机中的表现形式称为机器数,其特点是以二进制的方式存储,数的符号用0(正)和1(负)来表示,机器数对应的实际数值为数的真值。为了便于运算,机器数可采用原码,反码,补码等不同的编码方法。
假设机器字长为8,采用二进制位的方式表示数据,最高位为符号位,0表示正,1表示负
1、原码
原码就是符号位加上真值的绝对值。
假设数值X的原码记作[X]原,则:
[+1]原 = 0000 0001 [-1]原 = 1000 0001
[+127]原 = 0111 1111 [-127]原 = 1111 1111
[+10]原 = 0000 1010 [-10]原 = 1000 1010
0的原码有2种表示方式,分别为:
[+0]原 = 0000 0000 [-0]原 = 1000 0000
2、反码
正数的反码就是原码,负数的反码就是其原码按位取反(除符号位)。
假设数值X的反码记作[X]反,则:
[+1]反 = 0000 0001 [-1]反 = 1111 1110
[+127]反 = 0111 1111 [-127]反 = 1000 0000
[+10]反 = 0000 1010 [-10]反 = 1111 0101
0的反码有2种表示方式,分别为:
[+0]反 = 0000 0000 [-0]反 = 1111 1111
3、补码
正数的补码就是原码,负数的补码是其反码+1
假设数值X的补码记作[X]补,则:
[+1]补 = 0000 0001 [-1]补 = 1111 1111
[+127]补 = 0111 1111 [-127]补 = 1000 0001
[+10]补 = 0000 1010 [-10]补 = 1111 0110
0的补码有1种表示方式,为:
[+0]补 = [-0]补 = 0000 0000
总结:
1、正数的原码,反码和补码相同
2、负数的反码是其原码按位取反(除符号位),负数的补码是其反码+1
0的补码有1种表示方式,为: [+0]补 = [-0]补 = 0000 0000
假设机器字长为8,采用二进制位的方式表示数据,最高位为符号位,0表示正,1表示负
1、原码
原码就是符号位加上真值的绝对值。
假设数值X的原码记作[X]原,则:
[+1]原 = 0000 0001 [-1]原 = 1000 0001
[+127]原 = 0111 1111 [-127]原 = 1111 1111
[+10]原 = 0000 1010 [-10]原 = 1000 1010
0的原码有2种表示方式,分别为:
[+0]原 = 0000 0000 [-0]原 = 1000 0000
2、反码
正数的反码就是原码,负数的反码就是其原码按位取反(除符号位)。
假设数值X的反码记作[X]反,则:
[+1]反 = 0000 0001 [-1]反 = 1111 1110
[+127]反 = 0111 1111 [-127]反 = 1000 0000
[+10]反 = 0000 1010 [-10]反 = 1111 0101
0的反码有2种表示方式,分别为:
[+0]反 = 0000 0000 [-0]反 = 1111 1111
3、补码
正数的补码就是原码,负数的补码是其反码+1
假设数值X的补码记作[X]补,则:
[+1]补 = 0000 0001 [-1]补 = 1111 1111
[+127]补 = 0111 1111 [-127]补 = 1000 0001
[+10]补 = 0000 1010 [-10]补 = 1111 0110
0的补码有1种表示方式,为:
[+0]补 = [-0]补 = 0000 0000
总结:
1、正数的原码,反码和补码相同
2、负数的反码是其原码按位取反(除符号位),负数的补码是其反码+1
3、0的表示方式比较特殊
0的原码有2种表示方式,分别为:[+0]原 = 0000 0000 [-0]原 = 1000 0000
0的反码有2种表示方式,分别为:[+0]反 = 0000 0000 [-0]反 = 1111 11110的补码有1种表示方式,为: [+0]补 = [-0]补 = 0000 0000