1. 程式人生 > 其它 >計算機中如何實現減法?補數的概念

計算機中如何實現減法?補數的概念

計算機是如何做減法的

對於加法來說,計算機很容易實現,加法是始終從兩個加數的最右列向最左列進行計算的,每一列的的進位加到下一列中。而在減法中沒有進位,只有借位,它與加法存在本質的區別。

例如,我們可以先看一道例題:

    

要解決這個問題,我們首先從最右列入手,可以看見,6是大於3的,所以要從5上借1,再用13減去6得到7。由於5已經被借走1,所以實際上是4了,繼續向2借1,得到7,以此類推,我們可以得到結果為77。

我們可以通過一些小技巧來讓減法不涉及借位。為了避免借位,我們首先要從999中減去減數,而不是從原本的被減數中減去減數。
    

由於運算元是三位數,所以我們這裡使用了999。從一串9中減去一個數叫做對9求補數,176對9的補數是823.計算出補數後,將補數與原來的被減數相加就可以得到1076,最後再將結果加上1,並減去1000。這樣我們就得到了結果77,而且沒有使用到借位。原理是這樣的:

等價於

又等價於

然後將數字重新組合

那麼我們將這種方法應用於二進位制,就變為了:

        

第一步,我們用11111111(255)減去減數:

    

第二步,將補數與減數相加:

     

第三步,將結果加1,再減去100000000就得到1001101,就等於十進位制數的77。

其實我們可以發現,上述的補數,就是把減數按位把0換成1,把1換成0。然後把補數和減數相加得到的結果再減去100000000,實際上在電腦中沒有進行這一步,它是直接把最高位捨棄了。就好比一個24小時的時鐘,現在是23點,再加上三個小時就是26,但是時鐘最高位只有24,接著就是1點了,所以當超過24過後就溢位,得到了2點。在計算機中如此。當只有8位的時候,最後補數與減數相加得到了9位,就溢位最高位,就得到了正確結果。