原码、反码和补码
正数的原、反、补码
正数的 原码=反码=补码
例:用一个字节,8位二进制表示正数3,其原码为 0000 0011,其中最高位为符号位(0:表正数,1:表负数);
其反码为 0000 0011;补码为 0000 0011;
负数的原、反、补码
负数的反码 = 原码除符号位取反
负数的补码 = 反码+1
例:用一个字节,8位二进制表示负数-3,其 原码位 1000 0011,其中最高位为符号位;
其反码为 1111 1100;
其补码为 1111 1101(反码的最后一位加1);
已知补码求原码
- 正数
正数的 原码 = 补码; - 负数
负数的 原码 = (补码-1)除符号位取反;
这里有两步操作,及将从原码到补码的步骤逆序;首先将 补码-1 得到反码,在将反码取反得到补码;
例:
已知11的补码为 0000 1011,其原码也为 0000 1011;
已知-11的补码为 1111 0101,其原码的求解步骤为:1)将补码减1得 1111 0100(反码);2)除符号位取反得 1000 1011(原码);
本文如有错误还请斧正;