天天看點

為什麼計算機使用補碼進行計算

為什麼計算機使用補碼進行計算

今天看到一句話(Subtraction can be easily reduced to addition by using complement code.粗略翻譯:使用補碼可以很容易的将減法化為加法)沒想明白,後悔當初沒好好學數字邏輯。

補充知識:

  • 原碼: 對計算機中數字的二進制定點表示。最高為為符号位,符号位為0表示正數,為1表示負數,其餘位置表示數值大小。原碼不能直接參加運算,比如(-1)+1=0,如果用二進制計算:00000001+10000001=10000010,換算為十進制為130,出現運算錯誤。
  • 反碼: 一個數如果為正,則它的反碼與原碼相同;一個數如果為負,則符号位為1,其餘各位對原碼取反。
  • 補碼: 一個數如果為正,則它的原碼、反碼、補碼相同;一個數如果為負,則符号位為1,其餘各位是對原碼取反,再整體加1。

補碼用來進行計算的優勢:

  • 資料的符号與資料一起參加運算。
  • 求差時将負減數求補,用求和代替求差,将減法運算轉換為補碼的加法運算。
  • 運算結果為補碼。如果符号位為 0 ,表明運算結果為正;如果符号位為 1 ,則表明結果為負。

總結來說,補碼可以友善的實作減法運算或者結果出現二進制負數的情況。

繼續閱讀