補數,是電腦在最底層,做任何基礎加法減法(加法器、減法器)會用到的東西,最常聽到的應該是二補數,因為電腦是二進位,實際上補數主要有兩種,n補數和n-1補數,每個進位有這兩種補數。
定義
- n補數(假如是二進位就是二補數,十進位就是十補數)
- n-1補數(假如是二進位就是一補數)
所以我們可以得出n補數比多1。
而我們看一下維基百科。
維基百科說電腦是用二補數,那為什麼要用二補數呢?我們可以看一下二補數跟一補數的圖。
可以看到2補數應是多了一個可以表示,並且每個數字都有唯一的表示方式,所以電腦都用二補數。
並且二補數的負號是用以下判斷,把001(1)取2補數,就是111,也就是-1
這也可以解釋為什麼有號整數再相加的時候,超出去會變成負數。
如同以下:
32位的補碼: 0111…1(2147483647) + 000…1(1) = 100000(-2147483648)。
並且無號整數相加時會自動對2³²次方取餘數。
32位的補碼: 1111…1(4294967295) + 000…1(1) = 0(mod 2³²)。