原碼,反碼,補碼及其運算

  • 2020 年 9 月 20 日
  • 筆記

原碼,反碼,補碼及其運算

1)簡述
原碼: 用來轉換對應進位.
反碼: 二進位碼0變1,1變0叫做反碼,反碼用於原碼補碼之間的轉換.(符號位不變)。
補碼: 用來做數據的存儲運算. 補碼提出的根源是讓電腦底層的實現減法操作(可以表達出一個數的正負)。

2)運算規則
(原碼 反碼 補碼之間的轉換 , 符號位不要動)
正數: 原碼 = 反碼 = 補碼
負數: 原碼 = 補碼取反加1   給補碼求原碼
負數: 補碼 = 原碼取反加1   給原碼求補碼

 

求12 +(- 15) = ? 
補碼用來做數據的存儲運算,因此先求12和-15的補碼
12的補碼(=反碼=原碼):0000 1100(高位為0,表示正數)
-15的原碼: 1000 1111 (高位為1,表示負數,轉換為10進位時,高位的1不用進行換算) 
     反碼: 1111 0000 (原碼取反) 
     補碼: 1111 0001 (反碼加1)

補碼做相加運算
 12的補碼: 0000 1100
-15的補碼: 1111 0001
         -------------
結果(補碼): 1111 1101
補碼再轉換為原碼(即補碼的補碼,同樣做取反加1換算)
補碼:   1111 1101(高位為1,表示負數,進行補碼反碼原碼換算時是不變的)
反碼:   1000 0010(補碼取反)
原碼:   1000 0011(反碼加1)
10進位: -3