計算機補碼學習

2021-07-03 07:10:28 字數 1443 閱讀 4444

補碼:按位取反,末位加一。很簡單,容易記,但是為什麼要這麼做?

首先是補碼出現的原因。

第一:簡化計算機的減法計算,避免出現借位的情況。

以十進位制為例,如果要計算200-199,無可避免的要進行兩次借位,每一次借位,要儲存幾個資料,借了多少、借位後的資料是多少、被借的資料成了多少,這樣就需要很多原件來儲存,也需要做許多操作,這明顯是很不好的。

如何避免借位?

如果將200-199,轉換成200+(999-199),這樣在計算999-199的時候,就完全可以避免借位,但是在加上200後,再減去多餘的999,又不可避免的產生了借位,這樣又不行了。

這種情況下,被減數(200)大於減數(199),這樣的話,200+(999-199)的值必然大於1000,也就是由三位數變成了四位數,其結果值所在區間是1000-1999之間。這個結果,提供了減去999不借位的可能性。

在這個規律下,不再減去999,而是加上1,然後減去1000。這樣就可以避免借位,然後實現減法了。所以完整的計算公式就是200+(999-199)+1-1000=1。

其中的999-199,就是十進位制形式的按位取反。寫成二進位制的形式就是111-010=101,這樣的形式。 

第二:節約計算空間。

這裡解釋為什麼要加一。

上面將999補成1000,其實也算是要加一的原因之一。

另外乙個原因就是節約計算空間。某種情況下,我們要表示-500到+499,如果加符號位,我們需要4位來儲存,實際上只要3位就足夠了。因為三位數可以表示0-999,正數,我們只用了0-499之間的範圍,500-999的範圍完全被浪費掉了,所以完全可以用500-999的數字來表示-500--1之間的數。

就是用999表示-1,998表示-2,以此類推。

但是如果只是這樣,用補碼就可以了,何必要加一,再推出個補碼呢?因為-0和+0,在加減法運算中是毫無意義的。所以原來用以表示-0的999就沒有了意義了,所以就移一位,原來用999表示-0的,現在就用999表示-1。

正數補碼的計算和負數補碼的計算

設要求補碼的數為x,那麼計算公式就是999+x+1。

以10為例:999+10+1=1010,進製捨棄,就是10。所以正數的補碼就是其本身。

以-10為例:999+(-10)+1=990,所以,-10的補碼就是990。

補碼的應用

200-190=200+999-190+1-1000=200+(999-190+1)-1000

看到這個式子,應該就很熟悉了,減數已經轉換成補碼的形式在參與運算了。當然被減數是正數,正數的補碼是其本身,自然也就是補碼形式的。這也是為什麼經常會看到有人說計算機中的數都是以補碼形式存在的原因了。

理解了這些,補碼也就不難理解了,也就沒有必要再去背什麼「按位取反,末尾加一」,糾結什麼「符號位要不要參與取反了」。

備註:這裡都是以十進位製作為講解數的,方便理解,二進位制也是同樣的道理,可以依次類推。十進位制中的999,和二進位制中的111是同等意義的,都是某位數內,能夠表示的最大的數。

計算機補碼

1 可以將符號位與其他位統一處理,無須單獨設定符號處理線路。2 只使用加法器就可以實現加減運算。3 兩個用補碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄。例 求 7的補碼表示。解1 7的補碼表示為00000111,按照轉換規則得出 7的補碼表示為11111001。解2 還有一種做法是根...

計算機補碼

名詞解釋 補碼 1 在計算機系統中,數值一律有補碼來表示 儲存 使用補碼,可以將符號位和其他位統一處理 同時,減法也可按加法來處理.另外,兩個用補碼表示的資料相加時候,如果最高位 符號位 有進製,則進違被捨棄.2 補碼與原碼的轉換過程幾乎是相同的 數值的補碼表示也分兩種情況 1 正數的補碼 與原碼相...

計算機負數補碼

在計算機系統中,數值一律用補碼來表示 儲存 主要原因 使用補碼,可以將符號位和其它位統一處理 同時,減法也可按加法來處理。另外,兩個用補 碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄。2 補碼與原碼的轉換過程幾乎是相同的。數值的補碼表示也分兩種情況 1 正數的補碼 與原碼相同。例如,9...