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

1.3 計算機內的信息表示

在計算機中,各種信息都是以二進制數的形式表示的,這是由計算機電路所采用的元器件決定的。計算機中采用了具有兩個穩定狀態的二值電路:用“0”表示低電位,“1”表示高電位。采用這種進位制具有運算簡單、電路實現方便、成本低的特點。

1.3.1 數制及其特點

日常生活中人們使用十進制數,計算機采用二進制數,但為了書寫方便,也采用八進制或十六進制形式表示,下面介紹數制的基本概念。

各種進位計數值都可統一表示為下面的形式:

式中,R表示進位計數制的基數,在十進制、二進制、八進制、十六進制中R的值分別為10、2、8、16;

i表示位序號,個位為0,向高位(左邊)依次加1,向低位(右邊)依次減1;

a i表示第i位上的一個數符,其取值范圍為0~R ?1;

R i表示第i位上的權;

mn表示最低位和最高位的位序號。

一切進位計數制都有兩個基本特點:按基數進、借位,用位權值來計數。

所謂按基數進、借位,就是在執行加法或減法時,要遵循“逢R進一,借一當R”的規則。

因此,R進制的最大數符為R?1,而不是R,每個數符只能用一個字符表示。

1.十進制(Decimal System)

十進制的基數為10,它有10個數符:0,1,2,…,8,9。逢十進一,各位的權是以10為底的冪,書寫時數字用括號括起來,再加上下標10。對十進制,下標通常省略不寫。也可以在數字后加字母D表示(通常省略不寫)。

【例】345.56 = (345.56)10= 3×102+ 4×101+ 5×100+ 5×10?1+ 6×10?2

2.二進制(Binary System)

二進制的基數為2,只有2個數符:0,1。二進制數逢二進一,各位的權是以2為底的冪,書寫時數字用括號括起來,再加上下標2。也可以在數字后加字母B表示。

【例】(11101.101)2= 1×24+ 1×23+ 1×22+0×21+ 1×20+ 1×2?1+ 0×2?2+ 1×2?3

3.八進制(Octare System)

八進制的基數為8,它有8個數符:0,1,2,…,6,7。八進制數逢八進一,各位的權是以8為底的冪,書寫時數字用括號括起來,再加上下標8。也可以在數字后加字母O表示。

【例】(753.65)8= 7×82+ 5×81+ 3×80+ 6×8?1+ 5×8?2

4.十六進制(Hexadecimal System)

十六進制的基數為16,它有16個數符:0,1,2,…,8,9,A,B,C,D,E,F。十六進制數逢十六進一,各位的權是以 16 為底的冪,書寫時數字用括號括起來,再加上下標 16。也可以在數字后加字母H表示。

遵循每個數符只能用一個字符表示的原則,在十六進制中對值大于9的6個數(即10~15)分別借用A~F 6個字母來表示。

【例】(A85.76)16= 10×162+ 8×161+ 5×160+ 7×16?1+ 6×16?2

八進制或十六進制經常用在匯編語言程序或顯示存儲單元的內容顯示中。

1.3.2 不同數制之間的轉換

1.二進制、八進制、十六進制轉換為十進制

若要將二進制、八進制、十六進制數轉換為十進制數,可以按照求和的形式容易地計算出相應的十進制數。

【例】

(11101.101)2= 1×24+ 1×23+ 1×22+ 0×21+ 1×20+ 1×2?1+ 0×2?2+ 1×2?3= 29.625

(753.65)8= 7×82+ 5×81+ 3×80+ 6×8?1+ 5×8?2= 491.828 125

(A85.76)16= 10×162+ 8×161+ 5×160+ 7×16?1+ 6×16?2= 2 693.460 937 5

2.十進制轉換為二進制、八進制、十六進制

將十進制數轉換為二進制、八進制、十六進制數,其整數部分和小數部分的轉換規則如下。

整數部分:用除R(基數)取余法則(規則:先余為低,后余為高)。

小數部分:用乘R(基數)取整法則(規則:先整為高,后整為低)。

【例】將(29.625)10轉換為二進制表示。

a.用“除2取余”法先求出整數29對應的二進制數。

b.用“乘2取整”法求出小數0.625對應的二進制數。

由此可得(29.625)10= (11101.101)2

3.二進制與八進制、十六進制之間的轉換

從23= 8、24= 16可以看出,每位八進制數可用3位二進制數表示,每位十六進制數可用4位二進制數表示,如表1-1和表1-2所示。

表1-1 二進制與八進制之間的轉換

表1-2 二進制與十六進制之間的轉換

① 八進制、十六進制轉換為二進制。

只要把每位的八進制數或十六進制數展開為3位或4位二進制數,最后去掉整數首部的0或小數尾部的0即可。

【例】(753.65)8=111 101 011.110 101      將每位展開為3位二進制數

        =(111101011.110101)2    轉換后的二進制數

(A85.76)16=1010 1000 0101.0111 0110    將每位展開為4位二進制數

      =(101010000101.0111011)2    去掉尾部的“0”

② 二進制轉換為八進制、十六進制。

以小數點為中心,分別向左、右每3位或4位分成一組,不足3位或4位的則以“0”補足,然后將每個分組用一位對應的八進制數或十六進制數代替即可,這就是轉換為八進制或十六進制的結果。

【例】(11101.101)2=011 101.101        每3位分成一組

          =(35.5)8         轉換后的結果

(11101.101)2=0001 1101.1010       每4位分成一組

       =(1D.A)16          轉換后的結果

1.3.3 計算機中字符的表示方法

字符包括英文字符(字母、數字、各種符號)和中文字符,由于計算機采用二進制,因此字符也必須按特定的規則進行二進制編碼才能進入計算機。字符編碼時首先要確定編碼的字符總數,然后將每一個字符按順序確定序號(序號的大小無意義,僅作為識別與使用這些字符的依據)。字符的多少涉及編碼的位數。中英文采用不同的編碼。

1.ASCII碼

ASCII(American Standard Code for Information Interchange,美國標準信息交換碼)是被國際標準化組織所采用的計算機在相互通信時共同遵守的標準。ASCII有兩種:7位ASCII碼和8位ASCII碼,前者稱為標準ASCII碼,后者稱為擴展ASCII碼。7位ASCII碼如表1-3所示。

表1-3 7位ASCII編碼表

續表

從表1-3可以看出,ASCII碼共包含27= 128個不同的編碼,也就是128個不同的字符。其中,前32個和最后一個為控制碼,是不可顯示或打印的,主要用于控制計算機某些外圍設備的工作特性和某些計算機軟件的運行情況。例如,CR(Carriage Return)稱為回車字符,是換行控制符;BEL(Bell Character)稱為報警字符,是通信用的控制字符,可以作為報警裝置或類似的裝置發出報警的信號。其余95個為可打印/顯示字符(但空格也是看不見的,因此實際可打印/顯示的字符為94個),包括英文大小寫字母52個, 0~9共10個數字,標點符號、運算符號和其他符號共33個。

ASCII碼表中的可打印字符在鍵盤上都可以找到。在按鍵時,一方面,顯示器上顯示出相應的字符;另一方面,該字符的ASCII碼將輸入存儲器中等待用戶的處理。

計算機中字符的處理實際上是對字符ASCII碼進行的處理。例如,比較字符“B”和“G”的大小實際上是對“B”和“G”的ASCII碼66和71進行比較。輸入字符時,該鍵所對應的ASCII碼即存入計算機。將一篇文章輸入完成后,計算機中實際存放的是一串ASCII碼。

2.漢字的編碼

漢字為非拼音文字,不可能像英文那樣一字一碼,顯然漢字編碼比英文編碼要復雜得多。

(1)漢字交換碼

1981年我國頒布實施了GB 2312—1980《信息交換用漢字編碼字符集 基本集》。該標準規定用16位二進制表示一個漢字,每個字節只使用低7位(與ASCII碼相同),即有128×128=16384種狀態。由于ASCII 碼中的 34 個控制碼在漢字系統中也要使用,為不致發生沖突,不能作為漢字編碼,也就是剩下 94種,所以漢字編碼表的大小是94×94=8836,用來表示國標中規定的7445個漢字和圖形符號(該標準收錄6 763個常用漢字,包括一級漢字3 755個,按漢語拼音排序;二級漢字3 008個,按偏旁部首排序;以及英、俄、日文字母與其他符號682個)。

每個漢字或圖形符號分別用兩位的十進制區碼(行碼)和兩位的十進制位碼(列碼)表示,不足的地方用0補上,組合起來就是區位碼。區碼或位碼的范圍都為1~94,這與基本ASCII碼相沖突(基本ASCII碼使用的是33~126),因此把區碼和位碼都加上20H(也就是32)。這樣轉換成的二進制代碼稱為信息交換碼(簡稱國標碼),即:

國標碼高位字節=區碼+20H

國標碼低位字節=位碼+20H

也就是每個漢字或符號都用兩個字節表示,其中每個字節的編碼從20H~7EH,即十進制的33~126。

國標碼字符集的劃分如表1-4所示。

表1-4 國標碼字符集的劃分

隨著Internet的發展,國家信息標準化委員會于2000年3月17日公布了GB18030—2000《信息技術、信息交換用漢字編碼字符集基本基的擴充》。該標準共收錄了 27 000 多個漢字,可以滿足人們對信息處理的需要。

(2)漢字機內碼

計算機既要處理中文,又要處理西文,因此通常利用字節的最高位區分某個碼值代表漢字(最高位為1)還是代表 ASCII 碼(最高位為 0)。漢字的機內碼在國標碼的基礎上,把兩個字節的最高位一律由“0”改為“1”,也就是漢字機內碼與國標碼的關系為

漢字機內碼高位字節=國標區位碼高位字節+80H。

漢字機內碼低位字節=國標區位碼低位字節+80H。

(3)漢字外碼(輸入碼)

英文的輸入碼與機內碼是一致的,而漢字輸入碼是指直接從鍵盤輸入的各種漢字輸入法的編碼,如區位碼、拼音碼、五筆字型碼等,它與機內碼是不同的。不同的漢字輸入方法其輸入編碼是不同的,但存入計算中的必須是它的機內碼,與采用的輸入法無關。各種輸入法的編碼稱為外碼。

(4)漢字字型碼

漢字字型碼又稱字模,用于漢字在顯示器顯示或打印機輸出。漢字字型碼通常有兩種表示方式:點陣和矢量表示方法。

用點陣表示字型時,漢字字型碼指的是這個漢字字型點陣的代碼。根據輸出漢字的要求不同,點陣的多少也不同。簡易型漢字為16×16點陣,提高型漢字為24×24點陣、32×32點陣、48×48點陣等。點陣規模越大,字型越清晰美觀,所占存儲空間也越大。例如,一個16×16點陣占用的存儲空間為32字節(2×16×8 = 32×8),一個24×24點陣占用的存儲空間為72字節(3×24×8 = 72×8)。

矢量表示方式存儲的是描述漢字字型的輪廓特征,當要輸出漢字時,通過計算機的計算,由漢字字型描述生成所需大小和形狀的漢字點陣。矢量化字型描述與最終文字顯示的大小及分辨率無關,因此可以產生高質量的漢字輸出。Windows中使用的TrueType技術就是漢字的矢量表示方式。

1.3.4 二進制數的運算

二進制數在計算機中可進行算術運算和邏輯運算。

1.算術運算

下面是二進制數算術運算的規則。

加法:0+0=0  1+0=0+1=1  1+1=10

減法:0?0=0  10?1=1     1?0=1  1?1=0

乘法:0×0=0  0×1=1×0=0  1×1=1

除法:0/1=0   1/1=1

2.邏輯運算

(1)或運算:“∨”“+”

規則:0∨0=0   0∨1=1   1∨0=1   1∨1=1

在或運算中,當兩個邏輯值有一個為1時,結果就為1,否則為0。

【例】要得到成績X不及格(小于60分)或者Y優秀(大于90分)的分數段人數,可用或運算表示為

(X<60)∨(Y>90)

(2)與運算:“∧”“· ”

規則:0∧0=0   0∧1=0   1∧0=0   1∧1=1

在與運算中,當兩個邏輯值都為1時,結果才為1,否則為0。

【例】若合格產品的標準需控制在200~300,要判斷某一產品質量參數X是否合格,可用與運算表示為

(X>200)∧(X<300)

(3)非運算:“ˉ”

在非運算中,對每位的邏輯值取反。

規則:0=1 1=0

【例】1011=0100

(4)異或運算:“⊕”

規則:0⊕0=0  0⊕1=1  1⊕0=1  1⊕1=0

在異或運算中,當兩個邏輯值不相同時,結果為1,否則為0。

1.3.5 數值在計算機中的表示及運算

1.二進制數的原碼、補碼和反碼表示

計算機中使用二進制數,所有的符號、數的正負號都是用二進制數值代碼表示的。在數值的最高位用“0”和“1”分別表示數的正、負號。一個數(包括符號)在計算機中的表示形式稱為機器數。機器數有3種表示法:原碼、補碼和反碼。機器數將符號位和數值位一起編碼,機器數對應的原來數值稱為真值。

(1)原碼表示法

在原碼表示方法中,數值用絕對值表示,在數值的最左邊用“0”和“1”分別表示正數和負數,寫作[X]

【例】在8位二進制數中,十進制數+22和?22的原碼表示為

[+22]= 00010110

[?22]= 10010110

應注意,0的原碼有兩種表示,分別是“00……0”和“10……0”,都作0處理。

(2)補碼表示法

一般在做兩個異號的原碼加法時,實際上是做減法,然后根據兩數的絕對值的大小來決定符號。能否統一用加法來實現呢?如對一個鐘表,將指針從6撥到2,可以順撥8,也可以倒撥4,用數學式子表示就是:6 + 8 ? 12= 2和6 ? 4= 2。

這里的12稱為鐘表的“模”。8與?4對于模12來說互為補數。計算機中是以2為模對數值做加法運算的,因此可以引入補碼,把減法運算轉換為加法運算。

求一個二進制數補碼的方法:正數的補碼與其原碼相同;負數的補碼是把其原碼除符號位外的各位先求其反碼,然后在最低位加1。通常用[X]補表示X的補碼,+4和?4的補碼表示為

[+4]= 00000100

[?4]= 11111100

(3)反碼表示法

正數的反碼等于這個數本身,負數的反碼等于其絕對值各位求反(符號位除外)。

【例】[+12]=00001100   [?12]=11110011

總結以上規律,可得到如下公式:X ? Y = X + (Y的補碼)= X + (Y的反碼+1)

2.定點數和浮點數

在計算機中,一個數如果小數點的位置是固定的,則稱為定點數,否則稱為浮點數。

(1)定點數

定點數一般把小數點固定在數值部分的最高位之前,即在符號位與數值部分之間,或把小數點固定在數值部分的最后面。前者將數表示成純小數,后者把數表示成整數。

(2)浮點數

浮點數是指在數的表示中,其小數點的位置是浮動的。任意一個二進制數N可以表示為

N = M×2E

其中,E是一個二進制整數,M是二進制小數,這里稱E為數N的階碼,M稱為數N的尾數,M表示了數N的全部有效數字,階碼E指明了小數點的位置。

在計算機中,一個浮點數的表示分為階碼和尾數兩個部分,格式如下:

其中,階碼確定了小數點的位置,表示數的范圍;尾數則表示數的精度;尾符也稱數符。浮點數的表示范圍比定點數大得多,精度也高。

從以上介紹中可知,計算機是采用二進制數存儲數據和進行計算的,引入補碼可以把減法轉換為加法,簡化了運算;使用浮點數擴大了數的表示范圍,提高了數的精度。

主站蜘蛛池模板: 酒泉市| 万载县| 万州区| 海盐县| 乐清市| 莱州市| 开鲁县| 太仆寺旗| 宁都县| 扬州市| 巢湖市| 彭泽县| 南陵县| 芷江| 吴忠市| 贺州市| 安庆市| 延安市| 建德市| 乐都县| 邵东县| 延津县| 郎溪县| 亚东县| 金川县| 铁力市| 常德市| 崇礼县| 夏邑县| 九龙城区| 临桂县| 鹿泉市| 乐至县| 杭锦后旗| 建始县| 兴义市| 福建省| 凤台县| 武夷山市| 贵港市| 肇庆市|