正文 第3章 計算機基礎知識3(1 / 3)

計算機內表示的數,分成整數和實數兩大類。在計算機內部,數據是以二進製的形式存儲和運算的。數的正負用高位字節的最高位來表示,定義為符號位,“0”表示正數,“1”表示負數。例如,二進製數+1101000在機器內的表示為。01101000。

(1)整數的表示。

計算機中的整數一般用定點數表示,定點數指約定機器中所有數據的小數點位置是固定不變的。定點數x=x0x1x2…xn表示如下(x0。符號位,0代表正號,1代表負號)。由於約定小數點在固定位置,小數點就不再使用記號“.”來表示。通常將數據表示成純小數或純整數。

純小數的表示範圍為(x0x1x2…xn各位均為0時最小;各位均為1時最大)。0≤|x|≤1-2-n純整數的表示範圍為。0≤|x|≤2n-1如果用一個字節(8位)表示整數,則能表示的最大正整數為01111111(最高位為符號位),即最大值為127,若|數值|>|127|,則“溢出”。

除了帶符號的整數外,計算機還有一類無符號整數(不帶符號的整數)。無符號整數中,所有二進製位全部用來表示數的大小。如果用一個字節(8位)表示一個無符號整數,其取值範圍是0~255(28-1)。計算機中的地址常用無符號整數表示,可以用8位、16位或32位來表示。

(2)實數的表示。

實數一般用浮點數表示,因為它的小數點位置不固定,所以稱浮點數。它是既有整數又有小數的數,純小數可以看作實數的特例,例如,21.246、-2003.318都是實數,以上兩個數又可以表示為。21.246=102×(0.21246),-2003.318=104×(-0.2003318),其中指數部分用來指出實數中小數點的位置,括號內是一個純小數。二進製的實數表示也是這樣,例如100.101可表示為。100.101=210×1.00101=2-10×10010.1=2+11×0.100101在計算機中一個浮點數由指數(階碼)和尾數兩部分組成,其機內表示形式如下。

尾數用定點小數表示,給出有效數字的位數決定了浮點數的表示精度;階碼用整數形式表示,指明小數點在數據中的位置,決定了浮點數的表示範圍。其小數點約定在數符和尾數之間,在浮點數中數符和階符各占一位。

32位的浮點數中。S。浮點數的符號位,1位,0表示正數,1表示負數。

M。尾數,23位,用小數表示,小數點放在尾數域的最前麵。

E。階碼,8位階符采用隱含方式,即采用移碼方式來表示正負指數。

在計算機中對數據進行運算操作時,符號位如何表示呢?是否也同數值位一道參加運算操作呢?為了妥善處理這些問題,就產生了把符號位和數字位一起編碼來表示相應的數的各種表示方法,如原碼、補碼、反碼、移碼等。

通常,計算機所表示數據都為有符號數,在計算機中使用的、連同符號位一起數值化了的數,稱為機器數。機器數所表示的真實的數值,稱為真值。對於有符號數,機器數常用的表示方法有原碼、反碼和補碼三種。數x的原碼記作[x]原,反碼記作[x]反,補碼記作[x]補。一個負數的原碼符號位保持不變,其餘位取反就是機器數的反碼表示法。正數的反碼與原碼相同。將負數的反碼加1,則得到機器數的補碼表示。正數的補碼與原碼相同。

(1)原碼表示法。

最高位表示符號,數值位用二進製絕對值表示的方法,稱為原碼表示法。

(2)反碼表示法。

一個負數的原碼符號位保持不變,其餘位取反(就是各位數碼0變為1,1變為0),就是機器數的反碼表示法。正數的反碼與原碼相同。

我們先以鍾表對時為例說明補碼的概念。假設現在的標準時間為4點整,而有一隻表已經7點了,為了校準時間,可以采用兩種方法。一是將時針退7-4=3格;二是將時針向前撥12-3=9格。這兩種方法都能對準到4點,由此可以看出,減3和加9是等價的,就是說9是(-3)對12的補碼,可以用數學公式表示為。-3=+9(mod12)mod12的意思就是12模數,這個“模”表示被丟掉的數值。上式在數學上稱為同餘式。

上例中之所以7-3和7+9(mod12)等價,原因就是表指針超過12時,將12自動丟掉,最後得到16-12=4。從這裏可以得到一個啟示,就是負數用補碼表示時,可以把減法轉換為加法。這樣,在計算機中實現起來就比較方便。

由此我們得到求反碼和補碼的簡單方法。一個負數的原碼符號位保持不變,其餘位取反就是機器數的反碼表示法。正數的反碼與原碼相同。將負數的反碼最低位加1,則得到機器數的補碼表示。正數的補碼與原碼相同。

(3)補碼表示法。

采用補碼表示法進行減法運算就比原碼方便得多了。因為不論數是正還是負,機器總是做加法,減法運算可變為加法運算。但根據補碼定義,求負數的補碼要從2減去|x|。為了用加法代替減法,結果還得在求補碼時做一次減法,這顯然是不方便的。下麵介紹的反碼表示法可以解決負數的求補問題。

將補碼還原為真值時,如果補碼的最高位是0,則為正數,後麵的二進製數即為真值;如果補碼的最高位是1,則為負數,應將其後的數值位按位求反再加1,所得結果才是真值。

(4)移碼表示法。

用於表示浮點數的階碼。由於階碼是個n位的整數,所以假定定點整數移碼為將補碼的符號位取反即可。

上麵的數據四種機器表示法中,移碼表示法主要用於表示浮點數的階碼。由於補碼表示對加減法運算十分方便,因此目前機器中廣泛采用補碼表示法。在這類機器中,數用補碼表示,補碼存儲,補碼運算。也有些機器,數用原碼進行存儲和傳送,運算時改用補碼。還有些機器在做加減法時用補碼運算,在做乘除法時用原碼運算。