補數的概念
在日常生活中,常常會遇到補數的概念,例如時鐘指示為六點,想要它指向三點,可以按順時針方向將分針轉九格,也可以逆時針方向轉三格,結果是一致的。由於時針轉一圈為12小時,而其中12在時鐘里是不被顯示而自動丟失的,即15-12=3,15點和三點在時鐘表示上是一致的。想想一下,在時鐘這個問題上,任何時候時針向順時針轉九格和逆時針轉三格的效果都是一致的,我們將方向定位正負,即-3與+9等價。而數學上稱12為模寫作(mod 12),而稱+9是-3以12為模的補數記為
-3+9(mod 12)
-4+8(mod 12)
-5+7(mod 12)
【以上截取自《計算機組成原理·第二版》唐朔飛著p221】
可以將模理解為一個足夠大的正數,足夠大到比你運算所有數字的絕對值都要大。
結論:(在模確定的情況下)
一個負數可用它的正補數來代替,而這個正補數可以用模加上負數本身來得到。
一個正數和一個負數互為補數時,兩數的絕對值之和為模
正數的補數為其自身。
計算機科學中的套用
計算機科學中,補數的最大套用點為,在處理加法和減法中,不會因為數字的正負使用不同的計算方式。只要一種加法電路就可以處理各種有符號數加法,而且減法可以用一個數加上另一個數的補數來表示,因此只要有加法電路及補數電路即可完成各種有符號數的加法及減法,電路設計上相當方便。
關於補碼
補數在計算機中被稱為補碼(在港台被稱為二補數)
有符號的二進制數的補碼運算方法為:
正數:補碼為其本身
負數:除符號位外,所有位取反(即原碼的反碼),然後+1(簡稱為求反加一)。
如:-1101 的補碼為
1. -1101的原碼為 11101(第一位為符號位)
-1101的反碼為 10010(第一位為符號位)
-1101的補碼為 10011(第一位為符號位)
整數的補碼定義
[x]