原码反码补码的相互转换

原码反码补码的相互转换

  首先,正数的原码,反码,补码都是相同的。

  所以,这里讨论负数的原码,反码,补码的相互转化问题。

 1.  负数原码和反码的相互转化

  负数原码转化为反码:符号位不变,数值位按位取反。

  如:

原码 1100 0010
反码 1011 1101

  负数反码转化为原码:符号位不变,数值位按位取反。

反码 1011 1101
原码 1100 0010

 2.  负数原码和补码的相互转化

  负数原码转化为补码:符号位不变,数值位按位取反,末尾加一。

原码 1100 0010
反码 1011 1101 //符号位不变,数值位按位取反
补码 1011 1110 //末尾加1

  负数补码转化为原码:符号位不变,数值位按位取反,末尾加1。

补码 1011 1110
       1100 0001 //符号位不变,数值位按位取反
原码 1100 0010 //末尾加1

 3.负数反码和补码的相互转化

  负数反码转化为补码:末尾加1。

反码 1011 1101
补码 1011 1110

  负数补码转化为反码:末尾减1(注意,此处的反码是指原码的反码)。

补码         1011 1110
原码的反码   1011 1101
//减法 借位        

 4.总结

  正数的原码、反码和补码都相同。

  负数原码和反码的相互转换:符号位不变,数值位按位取反。

  负数原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1。