原码、反码、补码的相互转换
首先,正数的原码,反码,补码都是相同的。
所以,这里讨论负数的原码,反码,补码的相互转化问题。
1、负数原码和反码的相互转化
负数原码转化为反码:符号位不变,数值位按位取反。 如:
原码 1100 0010 反码 1011 1101
负数反码转化为原码:符号位不变,数值位按位取反。 如:
反码 1011 1101 原码 1100 0010
2、负数反码和补码的相互转化
负数反码转化为补码:末尾加1。 如:
反码 1011 1101 补码 1011 1110
负数补码转化为反码:末尾减1(注意,此处的反码是指原码的反码)。 如:
补码 1011 1110 原码的反码 1011 1101 //减法 借位
3、负数原码和补码的相互转化
根据1、2,负数原码转化为补码:符号位不变,数值位按位取反,末尾加1。 如:
原码 1100 0010 反码 1011 1101 //符号位不变,数值位按位取反 补码 1011 1110 //末尾加1
负数补码转化为原码有两种方式:1、符号位不变,数值位末尾减1,再按位取反。 如:
补码 1011 1110 末尾减一 1011 1101 原码 1100 0010 //数值位按位取反
2、符号位不变,数值位按位取反,末尾加1。 如:
补码 1011 1110 1100 0001 //符号位不变,数值位按位取反 原码 1100 0010 //末尾加1
4、总结
正数的原码、反码和补码都相同。 负数原码和反码的相互转换:符号位不变,数值位按位取反。 负数原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
什么是递归?递归的理解