我們主要要解決的問題就是負數的表示,而眾所周知,絕對值相等的兩個正負數之和為0。
假設我們有正數 0000 0000 0000 1111,我們如何表示其相反數呢?一般我們的思路是,找乙個數,跟它相加的結果等於0,但是我們發現,要找出乙個與它相加後結果等於0的數還是要略加思考一下的(因為要計算進製),所以,為何不找出乙個與它相加後結果是1111 1111 1111 1111的數,然後該數+1即是我們所要的答案啦。
於是,很容易的, 0000 0000 0000 1111 + 1111 1111 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000
一目了然,1111 1111 1111 0001 就是我們想要的答案了,那麼我們是怎麼得到這個相反數的呢?
首先,找出乙個數與它加起來結果是全1的,這個數便是它的反碼,然後這個數再加1,這便是它的相反數了,也是我們說的補碼。
我們檢驗一下0的情況,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二進位制表示均為0000。
乙個小小的例子解釋了為何補碼需要原碼取反之後再加1,是不是很神奇?
計算機補碼,為什麼要用補碼
在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值一併處理,不需要單獨的處理符號位而降低複雜度,使得加法和減法也可以統一處理 為什麼要用補碼,好處是什麼?為了表示二進位制數,如果直接用原始碼形式,需要額外的硬體 缺點 區分符號位0,1 如果用反碼,無需硬體分辨符號位,...
為什麼要使用補碼
想必對於原碼,反碼,補碼大家並不陌生,計算機專業的同學都會學到這方面的一些知識。當初在學這部分的時候,只知道用補碼可以解決0和 0的問題,但是還是沒明白為什麼會想到用補碼。前陣子看了史丹福大學關於正規化程式設計的公開課,裡面老師講了這方面的內容,三言兩語給出了乙個簡單明瞭的解釋,頓時覺得好棒!思路如...
為什麼計算機中使用補碼?
週六加班的時候,乙個同事看到我在筆畫二進位制,就問我,這是啥,我跟他bb一大堆,然後他問我一句 為什麼計算機使用補碼,而不使用普通的 原碼 呢?這的確是乙個好問題。討論上述的內容之前,先預設大家都知道如下兩個知識 那麼在補碼沒有出現之前,我們怎麼使用原碼去快速的加減數?我們知道,如果乙個數a要減去乙...