对原码、反码和补码的理解
一个字节是8个bit位,也就是8位二进制数。
1、正整数的原码、反码和补码。
100的原码:0110 0100
100的反码:0110 0100
100的补码:0110 0100
2、负整数的原码、反码和补码。
-100的原码:1110 0100
-100的反码:1001 1011
-100的补码:1001 1100
注:
1、正数的原码、反码和补码表示方式均相同,不需转换。
2、负数转换成二进制数(也就是原码)在前面要加符号位(1)。
3、负数的反码,将原码的各位取反,符号位不变
4、负数的补码,将反码加上二进制1即可。
补码的由来:
补码是为了简化减法而出现的。在我们计算减法的时候,将减号看作是负号,再将负数转化为补码求加法。这也是为什么正数的原码、反码和补码是一样的原因(和正数就没有关系)。
在计算机系统中,数值一律用补码来表示和存储。是因为使用补码可以将符号位和数值域统一处理,同时加减法也可以统一处理。
例如:
72 – 53 = 72 + (-53) =
72转化为二进制数为:0100 1000
-53转化为二进制数(原码)为: 1011 0101 反码为: 1100 1010 补码为:1100 1011
72 + (-53) = 0100 1000 + 1100 1011 = 0001 0011
将二进制数0001 0011 转化为十进制数为19(在计算的时候,在最高位也需要进1,但是只有8位,所以只能丢掉向前进的1位)
公式:被减数 – 减数 = 被减数 + (负的减数) = 被减数的原码 + 负的减数的补码
注:
十进制负整数的转换成二进制,也就是对其十进制正整数转换成二进制,所以十进制负整数表示成二进制就是其补码形式。