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