官术网_书友最值得收藏!

3.1.4 數(shù)值的補(bǔ)碼表示法

觀察圖3.6中的時鐘,這是一個分成了12個點(diǎn)的圓。假設(shè)時鐘指針一步只能走到相鄰的整點(diǎn),那么時鐘一共只有12種不同的狀態(tài),我們稱之為時鐘的模。

圖3.6 時鐘解釋補(bǔ)碼

現(xiàn)在時鐘指針指向了5點(diǎn),我們要讓它回到0點(diǎn)。有兩種方法可以實(shí)現(xiàn):一種是直接回退5個小時(5-5),如圖3.7所示;另一種是繼續(xù)往前走7個小時(5+7),如圖3.8所示。

圖3.7 時鐘5-5

圖3.8 時鐘5+7

在第二種方法中,5+7=12,而12剛好是時鐘的模,此時指針指向了0。

為了讓指針回到0點(diǎn),我們只需要讓它加上模與當(dāng)前時間的差即可。因此,指針回退5小時與指針前進(jìn)7小時是等價的。我們可以用指針前進(jìn)來代替指針后退。

將這種思想帶入三位二進(jìn)制中,我們知道三位二進(jìn)制能表示8個不同的數(shù)字,因此它的模為8。要讓3回到0,我們可以讓3減去3,也可以讓3加上模與3的差,即8-3=5。因此,在三位二進(jìn)制中,-3可以用5的二進(jìn)制表示(即101)。

這種用加法來等效減法的二進(jìn)制表示法被稱為補(bǔ)碼表示法。

在補(bǔ)碼表示法中,正數(shù)的補(bǔ)碼就是其二進(jìn)制本身,而正數(shù)對應(yīng)的負(fù)數(shù)的補(bǔ)碼為模減去正數(shù)的二進(jìn)制。負(fù)數(shù)的補(bǔ)碼為模與正數(shù)的差的二進(jìn)制,如圖3.9所示。

補(bǔ)碼表示法通過最高位區(qū)分正數(shù)和負(fù)數(shù),并且巧妙地應(yīng)用了溢出,所得到的計算結(jié)果也是正確的。類似于鐘表只需要向前走就可以實(shí)現(xiàn)減法,計算機(jī)的電路設(shè)計也只需要設(shè)計加法電路,極大地簡化了計算機(jī)內(nèi)部電路的復(fù)雜程度。

當(dāng)然,求一個正數(shù)對應(yīng)的負(fù)數(shù)的補(bǔ)碼也有一個更為簡單的方法,如圖3.10所示。

(1)先寫出這個正數(shù)的二進(jìn)制。

(2)從二進(jìn)制的右邊開始,在遇到第一個1之前,全都填0。

(3)遇到第一個1之后,填1。

(4)將遇到1之后的全部取反。

圖3.9 負(fù)數(shù)的補(bǔ)碼為模與正數(shù)的差的二進(jìn)制

圖3.10 計算補(bǔ)碼的簡單方法

主站蜘蛛池模板: 林州市| 贞丰县| 缙云县| 新丰县| 手游| 安陆市| 准格尔旗| 民权县| 江川县| 永平县| 教育| 漳州市| 湖北省| 阜新| 龙游县| 巫山县| 深泽县| 遂溪县| 永和县| 泽州县| 贺兰县| 藁城市| 西峡县| 虞城县| 海林市| 娱乐| 吉隆县| 锡林郭勒盟| 宁海县| 昭平县| 休宁县| 湖北省| 固镇县| 方山县| 芜湖市| 峡江县| 晋州市| 会泽县| 白朗县| 扎囊县| 罗山县|