4- 二進(jìn)制算術(shù)運(yùn)算
當(dāng)兩個(gè)數(shù)碼分別表示兩個(gè)數(shù)量大小時(shí),它們可以進(jìn)行數(shù)量間的加、減、乘、除等運(yùn)算。這種運(yùn)算稱為算術(shù)運(yùn)算。
因電腦和數(shù)字設(shè)備普遍采用二進(jìn)制運(yùn)算,本節(jié)只探討二進(jìn)制的算術(shù)運(yùn)算。
1. 二進(jìn)制算術(shù)運(yùn)算的特點(diǎn)
二進(jìn)制算術(shù)運(yùn)算和十進(jìn)制算術(shù)運(yùn)算規(guī)則基本相同,區(qū)別是“逢二進(jìn)一”。
由上圖可見二進(jìn)制的乘法和除法有以下特點(diǎn):
二進(jìn)制的乘法運(yùn)算可以通過若干次的“被乘數(shù)(或0)左移1位”和“被乘數(shù)(或0)與部分積相加”這兩種操作完成;
二進(jìn)制數(shù)的除法運(yùn)算能通過若干次的“除數(shù)右移1位”和“從被除數(shù)或余數(shù)中減去除數(shù)”這兩種操作完成。
如果我們能設(shè)法將減法操作轉(zhuǎn)化為某種形式的加法操作,那么加、減、乘、除運(yùn)算就全部可以用"移位"和"相加"兩種操作實(shí)現(xiàn)了。為了解決這個(gè)問題,計(jì)算機(jī)引入了原碼、反碼和補(bǔ)碼的概念。
2. 原碼、反碼、補(bǔ)碼和補(bǔ)碼運(yùn)算
二進(jìn)制數(shù)的正、負(fù)表示方法通常采用的是在二進(jìn)制數(shù)的前面增加一位符號位。這種形式的數(shù)稱為原碼。符號位為0表示這個(gè)數(shù)是正數(shù),符號位為1表示這個(gè)數(shù)是負(fù)數(shù)。其余各位表示數(shù)值。
在做減法運(yùn)算時(shí),如果兩個(gè)數(shù)是用原碼表示的,則首先需要比較兩數(shù)絕對值的大小,然后以絕對值大的一個(gè)作為被減數(shù)、絕對值小的一個(gè)作為減數(shù),求出差值,并以絕對值大的一個(gè)數(shù)的符號作為差值的符號。
這個(gè)操作過程比較麻煩,而且需要使用數(shù)值比較電路和減法運(yùn)算電路。如果用兩數(shù)的補(bǔ)碼相加代替上述減法運(yùn)算,則計(jì)算過程中就無需使用數(shù)值比較電路和減法運(yùn)算電路了,從而使減法運(yùn)算器的電路結(jié)構(gòu)大為簡化。
補(bǔ)碼的原理可參考其他電子書籍,正負(fù)數(shù)的反碼和補(bǔ)碼的計(jì)算原則如下:
反碼:正數(shù)的反碼等于原碼,負(fù)數(shù)的反碼:符號位不變,以下各位按位取反。
補(bǔ)碼:正數(shù)的補(bǔ)碼等于原碼,負(fù)數(shù)的補(bǔ)碼:符號位不變,以下各位按位取反,最后加1。一個(gè)數(shù)補(bǔ)碼的補(bǔ)碼即為其原碼。
例:帶符號位二進(jìn)制數(shù)00011010(+26)、10011010(-26)、00101101(+45)、和10101101(-45)的反碼和補(bǔ)碼。
在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來表示(存儲)。
補(bǔ)碼的優(yōu)點(diǎn)主要有:
使符號位能與數(shù)值位部分一起參加運(yùn)算,從而簡化運(yùn)算規(guī)則;
使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,從而簡化計(jì)算機(jī)中運(yùn)算電路的設(shè)計(jì);
兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號位)有進(jìn)位,則進(jìn)位被舍棄;
補(bǔ)碼轉(zhuǎn)換為對應(yīng)的十進(jìn)制數(shù)時(shí)正負(fù)數(shù)規(guī)則一樣 ;
0的補(bǔ)碼是唯一的。如0的5位補(bǔ)碼是00000。