源碼、補碼、反碼基礎

 首先,正數的原碼,反碼,補碼都是相同的。code

  因此,這裏討論負數的原碼,反碼,補碼的相互轉化問題。blog

 1.  負數原碼和反碼的相互轉化

  負數原碼轉化爲反碼:符號位不變,數值位按位取反。class

  如:總結

原碼 1100 0010
反碼 1011 1101

  負數反碼轉化爲原碼:符號位不變,數值位按位取反。di

反碼 1011 1101
原碼 1100 0010

 2.  負數原碼和補碼的相互轉化

  負數原碼轉化爲補碼:符號位不變,數值位按位取反,末尾加一。co

原碼 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。

相關文章
相關標籤/搜索