负数原码,反码和补码相互转化
负数在计算机中通常使用三种表示法:原码、反码和补码。下面是它们之间的相互转化方法:
原码:
原码是用最高位表示符号(0表示正数,1表示负数),其余位表示数值的绝对值。
例如,-5的原码在8位表示中是:10000101(符号位1,表示负数,后面的0000101是5的二进制表示)。
反码:
反码是将原码的符号位保持不变,数值部分取反(0变1,1变0)。
例如,-5的原码是10000101,其反码为:11111010(符号位1不变,数值部分0000101取反变成1111010)。
补码:
补码是反码加1。
例如,-5的反码是11111010,其补码为:11111011(11111010 + 1)。
转化过程
从原码到反码:
如果是负数,保持符号位不变,数值部分取反。
如果是正数,原码和反码相同。
从反码到补码:
反码加1。
从补码到反码:
补码减1得到反码。
反码的符号位保持不变,数值部分取反。
从反码到原码:
如果是负数,反码取反得到原码。
如果是正数,反码和原码相同。
从补码到原码:
先将补码转换为反码(补码减1得到反码)。
再将反码转换为原码。
示例
假设我们以8位二进制表示-5:
原码:10000101
反码:11111010
补码:11111011
如果要从补码11111011转换回原码:
先得到反码:11111011 - 1 = 11111010
得到原码:11111010取反得到10000101
这样就完成了负数在原码、反码和补码之间的转化。
该博文为原创文章,未经博主同意不得转载。本文章博客地址:https://cplusplus.blog.csdn.net/article/details/140887933