原码
如果机器字长为n,那么一个数的原码就是一个n位的二进制数
- 最高位为符号位:正数为0,负数为1
- 剩下的n-1位表示原数的绝对值
例如:
x=+101011,[x]原=0010 1011
x=-101011,[x]原=1010 1011
位数不够的用0补全
反码
正数的反码和原码相同
负数则在原码的基础上,符号位不变,其他位按位取反。
例如:
x=+101011,[x]原=0010 1011,[x]反=0010 1011
x=-101011,[x]原=1010 1011,[x]反=1101 0100
补码
正数的补码和原码相同
负数则在反码的基础上,按照正常的加法+1
例如:
x=-101011,[x]原=1010 1011,[x]反=1101 0100,[x]补=1101 0101
0的补码是唯一的,如果机器字长为8,[0]补=0000 0000
移码
将补码的符号位取反
例如:
x=-101011,[x]原=1010 1011,[x]反=1101 0100,[x]补=1101 0101,[x]移=0101 0101