最近一段時間,很多同學專門到計算機教研室(文法樓406)來詢問進制轉(zhuǎn)換及帶符號數(shù)的表示方法問題。一對一的講了好多次,但是肯定還有很多同學,尤其是大四即將參加計算機基礎課程清考的同學,對這塊內(nèi)容可能還有疑問,于是,我把進制轉(zhuǎn)換和帶符號數(shù)的表達方法分別寫了兩篇文章,以供同學們復習之用。進制轉(zhuǎn)換過程中需要注意的幾個問題已于11月24日在教學天地的教學答疑板塊刊登,這篇總結一下帶符號數(shù)的表示方法。
在計算機中,帶符號數(shù)的符號可以和其數(shù)值一樣用一位二進制數(shù)來表示,通常,我們把一個數(shù)的最高位設定為符號位,表示數(shù)的正負,正數(shù)用“0”表示,負數(shù)用“1”表示,其余位來表示數(shù)值的大小。這種在計算機內(nèi)連同符號一起數(shù)字化的數(shù)據(jù)稱為機器數(shù),計算機中常用的機器數(shù)有原碼,反碼和補碼三種表示。
首先:如何求一個數(shù)的原碼。
在原碼表示法中,第一位是符號位,用“0”表示正數(shù),用“1”表示負數(shù),數(shù)值部分以二進制的絕對值表示?偨Y為一句話就是:符號位加數(shù)值位。請看下例:
設機器字長為8位:
(+1) 原= 00000001 (+14) 原= 00001110
(-1) 原= 10000001 (-14) 原= 10001110
其次:如何求一個數(shù)的反碼。
在反碼表示法中,正數(shù)的反碼與原碼相同;負數(shù)的反碼符號位保持不變,數(shù)值位部分按位取反(即,“1”變“0”,“0”變“1”)。這就是為什么叫反碼的原因。試看下例:
(+1)反=(+1) 原= 00000001 (+14) 反=(+14) 原= 00001110
(-1) 反= 11111110 (-14) 反= 11110001
最后,如何求一個數(shù)的補碼。
在補碼表示法中,正數(shù)的補碼與原碼和反碼相同,也就是說,對正數(shù)而言,三碼合一。負數(shù)的補碼在其反碼的基礎上末位加1。請看下例:
假設機器字長還是8位:
(+1)補=(+1)反=(+1) 原= 00000001
(-1)補= 11111111 (注意和(-1)反=11111110 對比)
(+14) 反=(+14) 原= 00001110
(-14) 反= 11110010 (注意和(-14)反=11110001)
下來看一個完整的例子。求33和-33的原碼、反碼和補碼
解:(33)D=(100001)B
(33)原=(33)反=(33)補=00100001
(-33)原=10100001
(-33)反=11011110
(-33)補=11011111
大學計算機基礎課程是大學非計算機專業(yè)學生必修的公共基礎課程,也是學習其他計算機相關技術及課程的基礎。帶符號數(shù)的表示這一塊大家一定要重負數(shù)的三種表示形式,它是大學計算機課程中很重要的一個知識點,也是一個常考的點,無論是期末考試、補考還是清考,這一塊內(nèi)容大家都要認真的復習,一定要多動手,多練習,眼過千遍不如手過一遍。 |