- 計算機導論與C語言(第2版)
- 耿國華主編
- 2261字
- 2019-01-04 01:49:26
第2章 計算機中信息的表示
數制是用一組固定的數字和一套統一的規則來表示數目的方法。計算機在進行信息處理時,所要處理的信息必須首先在計算機中進行存儲。本章將詳細地介紹數值、字符、漢字在計算機中的存儲形式,以及不同數制之間的轉換規則,要求讀者掌握計算機中信息的表示方式。
2.1 數制
2.1.1 數制的基本概念
數制是用一組固定的數字和一套統一的規則來表示數目的方法。
按照進位方式計數的數制叫進位計數制。人們日常生活中經常使用十進制數,十進制數即“逢十進一”,而在生活中也會遇到其他進制,如六十進制(每分鐘60秒,每小時60分鐘,即逢六十進一)、十二進制、十六進制等。
進位計數涉及基數與各數位的位權。十進制計數的特點是“逢十進一”,在一個十進制數中,需要用到10個數字符號0~9,其基數為10,即十進制數中的每一位是這10個數字符號之一。在任何進制中,一個數的每個位置都有一個權值。
基數是指該進制中允許選用的基本數碼的個數。每一種進制都有固定數目的計數符號。
十進制:基數為10,10個記數符號分別為0、1、2、…、9。每一個數碼符號根據它在這個數中所在的位置(數位),按“逢十進一”來決定其實際數值。
二進制:基數為2,2個記數符號分別為0和1。每個數碼符號根據它在這個數中的數位,按“逢二進一”來決定其實際數值。
八進制:基數為8,8個記數符號分別為0、1、2、…、7。每個數碼符號根據它在這個數中的數位,按“逢八進一”來決定其實際的數值。
十六進制:基數為16,16個記數符號為0~9、A、B、C、D、E、F。其中A~F對應十進制數的10~15。每個數碼符號根據它在這個數中的數位,按“逢十六進一”決定其實際的數值。
一個數碼處在不同位置上,所代表的值也不同,如數字6在十位數位置上表示60,在百位數上表示600,而在小數點后1位表示0.6,可見每個數碼所表示的數值等于該數碼乘以一個與數碼所在位置相關的常數,這個常數叫做位權。位權的大小是以基數為底、數碼所在位置的序號為指數的整數次冪。十進制數的個位數位置的位權是100,十位數位置上的位權為101,小數點后1位的位權為10-1,其他的依次類推。
十進制數(34958.34)10=3×104+4×103+9×102+5×101+8×100+3×10-1+4×10-2
小數點左邊:從右向左,每一位對應的權值分別為100、101、102、103、104。
小數點右邊:從左向右,每一位對應的權值分別為10-1、10-2。
二進制數(100101.01)2=1×25+0×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2
小數點左邊:從右向左,每一位對應的權值分別為20、21、22、23、24、25。
小數點右邊:從左向右,每一位對應的權值分別為2-1、2-2。
不同的進制由于其進位的基數不同,其位權值也是不同的。
2.1.2 二進制及其運算
1.二進制的特點
十進制是人類最為方便的進制表示,但十進制數應用在計算機上卻遇到了表示上的困難,10個不同符號的表示和運算很復雜。在計算機中采用二進制數的原因如下:
(1)可行性。采用二進制,只有0和1兩個狀態,需要表示0、1兩種狀態的電子器件很多,如開關的接通和斷開、晶體管的導通和截止、磁元件的正負剩磁、電位電平的高與低等都可表示0、1兩個數碼。使用二進制,電子器件具有實現的可行性。
(2)簡易性。二進制數的運算規則少,運算簡單,使計算機運算器的硬件結構大大簡化(十進制的乘法九九口訣表有55條公式,而二進制乘法只有4條規則)。
(3)邏輯性。由于二進制0和1正好與邏輯代數的假(false)和真(true)相對應,有邏輯代數的理論基礎,用二進制數表示二值邏輯很自然。
2.數的二進制表示
在客觀世界中,事物的數量是客觀存在的,但表示的方法可以多種多樣。
例如,345用十進制數碼可以表示為(345)10=3×102+4×101+5×100,這里每個固定位置上的計數單位稱為位權。十進制計數中個位上的計數單位為100=1,從個位向左,依次為101、102、103、…向右依次為10-1、10-2、…它用二進制數碼可以表示為

二進制計數中個位上的計數單位也是1,即20=l,從個位向左依次為21、22、23、…向右依次為2-1、2-2、…
3.二進制數的算術運算
二進制數的算術運算與十進制數的算術運算類似,但其運算規則更為簡單,其規則如表2.1所示。
表2.1 二進制數的運算規則

(1)二進制數的加法運算。
【例2.1】 二進制數1001與1011相加。
算式:被加數 (1001)2……(9)10
加數 (1011)2……(11)10
進位 +) 111
和數 (10100)2……(20)10
結果:(1001)2+(1011)2=(10100)2
由算式可以看出,兩個二進制數相加時,每一位最多有3個數(本位被加數、加數和來自低位的進位)相加,按二進制數的加法運算法則得到本位相加的和及向高位的進位。
(2)二進制數的減法運算。
【例2.2】 二進制數11000001與00101101相減。
算式:被減數 (11000001)2……(193)10
減數 (00101101)2……(45)10
借位 -) 1111
差數 (10010100)2……(148)10
結果:(11000001)2-(11000001)2 =(10010100)2
由算式可以看出,兩個二進制數相減時,每一位最多有3個數(本位被減數、減數和向高位的借位)相減,按二進制數的減法運算法則得到本位相減的差數和向高位的借位。
4.二進制數的邏輯運算
計算機中的邏輯關系是一種二值邏輯,邏輯運算的結果只有“真”或“假”兩個值。二值邏輯很容易用二進制數的“0”和“1”來表示,一般用“1”表示真,用“0”表示假。邏輯值的每一位表示一個邏輯值,邏輯運算是按對應位進行的,每位之間相互獨立,不存在進位和借位關系,運算結果也是邏輯值。
三種基本的邏輯運算。邏輯運算有“或”、“與”和“非”三種。其他復雜的邏輯關系都可以由這三個基本邏輯關系組合而成。
(1)邏輯“或”。用于表示邏輯“或”關系的運算,“或”運算符可用+、OR、∪或∨表示。其運算規則如下:
0+0=0
0+1=1
1+0=1
1+1=1
即兩個邏輯位進行“或”運算,只要有一個為“真”,邏輯運算的結果就為“真”。
【例2.3】 如果A=1001111,B=1011101,求A+B。
步驟如下:

結果:A+B=1001111+1011101=1011111
(2)邏輯“與”。用于表示邏輯與關系的運算,稱為“與”運算,與運算符可用AND、· 、×、∩或∧表示。其運算規則如下:
0×0=0
0×1=0
1×0=0
1×1=1
即兩個邏輯位進行“與”運算,只要有一個為“假”,邏輯運算的結果就為“假”。
【例2.4】 如果A=1001111,B=1011101,求A×B。
步驟如下:

結果:A×B=1001111×1011101=1001101
(3)邏輯“非”。用于表示邏輯非關系的運算,該運算常在邏輯變量上加一橫線表示。其運算規則如下:

即對邏輯位求反。
2.2 不同數制間的轉換
在計算機內部,數據和程序都用二進制數來表示和處理,但計算機的輸入/輸出還是用十進制數來表示,這就存在數制間的轉換問題,轉換過程是通過機器軟件系統自動完成的,但我們應當懂得數制轉換的原理。
2.2.1 R進制數轉換為十進制數
R進制數轉換為十進制數時,可以采用按權展開各項相加的法則。
若l有n位整數m位小數其各位數為:(Kn-1Kn-2…K2K1K0.K-1…K-m),則l可以表示為:

當一個R進制數按權展開求和后,也就得到了該數值所對應的十進制數。
【例2.5】 將二進制數11011.01轉換成對應的十進制數。
(11011.01)2=(1×24+1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(27.25)10
【例2.6】 將八進制數33.2轉換成對應的十進制數。
(33.2)8=(3×81+3×80+2×8-1)10=(27.25)10
【例2.7】 將十六進制數1B.4H轉換成對應的十進制數。
(1B.4)16=(1×161+11×160+4×16-1)10=(27.25)10
2.2.2 十進制數轉換為R進制數
基數乘除法
將十進制數轉換為R進制數,采用基數乘除法實現,整數部分和小數部分須分別遵守不同的轉換規則:
① 對整數部分,采用除R取余法,即整數部分不斷除以R取余數,直到商為0為止,最先得到的余數為最低位,最后得到的余數為最高位。
② 對小數部分,采用乘R取整法,即小數部分不斷乘以R取整數,直到小數為0或達到有效精度為止,最先得到的整數為最高位(最靠近小數點),最后得到的整數為最低位。
1.十進制數轉換為二進制數
十進制數轉換為二進制數,基數為2,故對整數部分除2取余,對小數部分乘2取整。為了將一個既有整數部分又有小數部分的十進制數轉換成二進制數,可以分別將其整數部分和小數部分進行轉換,然后再進行組合。
【例2.8】 將(35.25)10轉換成二進制數。
整數部分:除2取余法。

注意:第一次得到的余數是二進制數的最低位,最后一次得到的余數是最高位。
也可用如下方式直觀地表示計算過程。

小數部分:乘2取整法。

注意:一個十進制小數不一定能完全準確地轉換成二進制小數,這時可以根據精度要求只轉換到小數點后某一位即可。將其整數部分和小數部分分別轉換,然后組合起來得(35.25)10=(100011.01)2
2.十進制數轉換為八進制數
八進制數碼的基本特征是:用8 個不同符號0、1、2、3、4、5、6、7 組成的符號串表示數量,相鄰兩個符號之間遵循“逢八進一”的原則,即各位上的位權是基數8的若干次冪。
【例2.9】 將十進制數(1725.32)10轉換成八進制數(轉換結果取3位小數)。
十進制數轉換成八進制數,基數為8,故對整數部分除8取余,對小數部分乘8取整。為了將一個既有整數部分又有小數部分的十進制數轉換成八進制數,可以將其整數部分和小數部分分別轉換,然后再組合。
整數部分:除8取余法。

小數部分:乘8取整法。

得(1725.32)10≈(3275.243)8
3.十進制數轉換為十六進制數
十六進制數碼的基本特征是:用16個不同符號0~9和A、B、C、D、E、F組成的符號串表示數量,相鄰兩個符號之間遵循“逢十六進一”的原則,即各位上的位權是基數16的若干次冪。
將十進制整數轉換成十六進制整數可以采用“除16 取余”法;將十進制小數轉換成十六進制小數可以采用“乘16取整”法。如果十進制數既含有整數部分又含有小數部分則應分別轉換后再組合起來。
【例2.10】 將(237.45)10轉換成十六進制數(取3位小數)。
整數部分:除16取余法。

小數部分:乘16取整法。

得(237.45)10 ≈(ED.733)16
2.2.3 二進制數轉換為八進制數、十六進制數
二進制數、八進制數、十六進制數碼間的關系:8和16都是2的整數次冪,即8=23,16=24,因此3位二進制數相當于l位八進制數,4位二進制數相當于l位十六進制數,如表2.2所示,它們之間的轉換關系也相當簡單。由于二進制數表示數值的位數較長,因此常用八進制數、十六進制數來表示二進制數。
表2.2 二進制數、八進制數、十六進制數的對應關系表

將二進制數以小數點為中心分別向兩邊分組,轉換成八(或十六)進制數,按每3(或4)位為一組,整數部分向左分組,不足位數左補0。小數部分向右分組,不足部分右邊加0補足,然后將每組二進制數轉化成八(或十六)進制數即可。
【例2.11】 將二進制數(11101110.00101011)2轉換成八進制數、十六進制數。

2.2.4 八進制數、十六進制數轉換為二進制數
將每位八(或十六)進制數展開為3(或4)位二進制數。
【例2.12】{L-End}
【例2.13】{L-End}
整數前的高位零和小數后的低位零可取消。
在各種進制轉換中,最為重要的是二進制數與十進制數之間的轉換計算,以及八進制數、十六進制數與二進制數之間的直接對應轉換。
2.3 計算機中的數據及其編碼
數據(data)是表征客觀事物的、可以被記錄而且能夠被識別的各種符號,包括字符、符號、表格、聲音、圖形和圖像等。簡而言之,一切可以被計算機加工、處理的對象都可以被稱之為數據。數據可在物理介質上記錄或傳輸,并通過外圍設備被計算機接收,經過處理而得到結果。
數據能被輸入計算機加以處理,包括存儲、傳送、排序、歸并、計算、轉換、檢索、制表和模擬等操作,以得到滿足人們需要的結果。數據經過解釋并賦予一定的意義后,便成為信息。這里所說的數據指的是廣義的數據,可以用來表示:
● 事物的數量,如產量、資金、職工人數和物品數量等;
● 事物的名稱或代號,如廠名、車間名、學校名和職工名等;
● 事物抽象的性質,如人體的健康狀況、文化程度、政治面貌和工作能力等。
數據有兩種形式。一種形式為人類可讀形式的數據,簡稱人讀數據。因為數據首先是由人類進行收集、整理、組織和使用的,這就形成了人類獨有的語言、文字和圖像,如圖書資料、音像制品等。另一種形式稱為機器可讀形式的數據,簡稱機讀數據。如印刷在物品上的條形碼,錄制在磁帶、磁盤、光盤上的數碼,穿在紙帶和卡片上的各種孔等,都是通過特制的輸入設備將這些信息傳輸給計算機處理,它們都屬于機器可讀數據。顯然,機器可讀數據采用了二進制數據的形式。
2.3.1 數據的單位
計算機中數據的常用存儲單位有位、字節和字。
1.位(bit)
計算機采用二進制數,運算器運算的是二進制數,控制器發出的各種指令也用二進制表示,存儲器中存放的數據和程序均是二進制數,在網絡上進行數據通信時發送和接收的還是二進制數。顯然,在計算機內部到處都是由0和1組成的數據流。
計算機中最小的數據單位是二進制的一個數位,簡稱為位(bit或b),也叫比特,是最小的信息單位。計算機中最直接、最基本的操作就是對二進制位的操作。
2.字節(Byte)
字節簡寫為B。為了表示人讀數據中的所有字符(字母、數字以及各種專用符號,大約有128~256個),需要7位或8位二進制數。因此,人們采用8位為1個字節。1個字節由8個二進制數位組成。
字節是計算機中用來表示存儲空間大小的基本容量單位。例如,計算機內存的存儲容量、磁盤的存儲容量等都是以字節為單位表示的。除用字節為單位表示存儲容量外,還可以用千字節(KB)、兆字節(MB)以及十億字節(GB)等表示存儲容量。它們之間存在下列換算關系:
1B=8bit
1KB=1024B=210 B(K的意思是“千”)
1MB=1024KB=210KB=220 B=1024×1024B(M讀“兆”)
1GB=1024MB=210MB=230 B=1024×1024KB(G讀“吉”)
1TB=1024GB=210GB=240 B=1024×1024MB(T讀“太”)
注意:位是計算機中最小的數據單位,而字節是計算機中的基本信息單位。
2.3.2 常用的數據編碼
信息是經過加工的數據,數據要按照規定的二進制形式表示才能被計算機處理,這些規定的形式就是數據的編碼。數據的類型有很多,數字和文字是最簡單的類型,表格、聲音、圖形和圖像則是復雜的類型。計算機不能直接處理英文字母、漢字、圖形或聲音,而是需要對這些數據進行編碼,編碼過程就是實現將信息在計算機中轉化為0和1二進制串的過程。編碼時需要考慮數據的特性,還要考慮便于計算機的存儲和處理,所以編碼是一項非常重要的工作。下面介紹幾種常用的編碼方法。
1.ASCII編碼
字符是計算機中最多的信息形式之一,是人與計算機進行通信、交互的重要媒介。在計算機中,要為每個字符指定一個固定的編碼,作為識別與使用這些字符的依據。
字符信息包括字母和各種符號,它們必須按規定的二進制碼來表示,計算機才能對其進行處理。字母及數字字符共62個,包括26個大寫英文字母、26個小寫英文字母和0~9這10個數字。此外,還有其他類型的符號(如%、#等),用127個符號足以表示字符符號的范圍。
1字節(Byte)為8位,最高位總是0,用7位二進制數可表示0000000~1111111范圍中27=128 個字符。在西文領域的符號處理普遍采用的是美國標準信息交換碼(ASCII碼:American Standard Code for Information Interchange),雖然ASCII碼是美國國家標準,但它已被國際標準化組織(ISO)認定為國際標準。ASCII碼已得到世界公認并在世界范圍內通用。
標準的ASCII碼是7位,用1B表示,最高位總是0,可以表示128個不同符號。其中前32個和最后一個通常是計算機系統專用的,代表一個不可見的控制字符。數字字符0~9的ASCII碼是連續的,為30H~39H(H表示是十六進制數);大寫字母A~Z和小寫英文字母a~z的ASCII碼也是連續的,分別為41H~5AH和61H~7AH。因此,在知道一個字母或數字的ASCII碼后,很容易推算出其他字母和數字的ASCII碼。
例如:大寫字母A,其ASCII碼為1000001,即ASC(A)=65;小寫字母a,其ASCII碼為1100001,即ASC(a)=97。可推得ASC(D)=68,ASC(d)=100。
擴展的ASCII碼是8位碼,也用1B表示,其前128個碼與標準的ASCII碼是一樣的,后128個碼(最高位為1)則有不同的標準,并且與漢字的編碼有沖突。為了查閱方便,在表2.3中列出了ASCII碼字符編碼。
表2.3 7位ASCII碼表

例如:大寫字母A,查表得(b7b6b5b4b3b2b1)=1000001。當從鍵盤輸入字符‘A’,計算機首先在內存存入‘A’的ASCII碼(01000001),然后在BIOS(基本輸入/輸出系統)中查找與01000001對應的字形(英文字符的字形固化在BIOS中),最后在輸出設備(如顯示器)輸出‘A’的字形。
注意:1個字符用1個字節表示,其最高位總是0。
2.漢字編碼
要在計算機中處理漢字字符,需要解決漢字的輸入/輸出以及漢字的處理等問題,較為復雜。漢字集很大,必須解決如下問題:
① 鍵盤上無漢字,不可能直接與鍵盤對應,需要輸入碼來對應。
② 漢字在計算機中的存儲需要機內碼來表示,以便查找。
③ 漢字量大,字形變化復雜。需要用對應的字庫來存儲。
由于漢字具有特殊性,計算機處理漢字信息時,漢字的輸入、存儲、處理及輸出過程中所使用的漢字代碼不相同,其中有用于漢字輸入的輸入碼,用于機內存儲和處理的機內碼,用于輸出顯示和打印的字模點陣碼(或稱字形碼)。即在漢字處理中需要經過漢字輸入碼、漢字機內碼、漢字字形碼的三碼轉換,具體轉換過程如圖2.1所示。

圖2.1 漢字編碼轉換過程
(1)漢字的輸入碼(外碼)。漢字輸入碼是為了利用現有的計算機鍵盤,將形態各異的漢字輸入計算機而編制的代碼。目前在我國推出的漢字輸入編碼方案很多,其表示形式大多是字母、數字或符號。編碼方案大致可以分為:以漢字發音進行編碼的音碼,如全拼碼、簡拼碼、雙拼碼等;按漢字的書寫形式進行編碼的形碼,如五筆字型碼;也有音形結合的編碼,如自然碼。
(2)信息交換用漢字編碼字符集。漢字集要存儲在計算機中,需要將經常使用的漢字存儲在計算機中,《信息交換用漢字編碼字符集·基本集》是我國于1980年制定的國家標準GB 2312—80,代號為國標碼,是國家規定的用于漢字信息處理的代碼的國家標準。
使用多少位來表示漢字集呢?GB 2312—80 中規定了信息交換用的6763 個漢字和682個非漢字圖形符號(包括幾種外文字母、數字和符號)的代碼,即共有7445個代碼。由于漢字要與西文符號表示相區別,在每個字節表示中最高位必須為1,只能用后7位表示漢字集,一個7位二進制符號只能表示27=128個漢字,而兩個7位二進制符號能表示214=16384個漢字,足以表示常用的7445個漢字,因此一個漢字應當用兩個字節表示。
漢字的區位碼:每個漢字(圖形符號)采用2B表示,每個字節只用低7 位。由于低7位中有34種狀態是用于控制字符的,因此,只有94(128-34=94)種狀態可用于漢字編碼。這樣,雙字節的低7位只能表示94×94=8836種狀態。此標準的漢字編碼表有94行、94列。其行號稱為區號,列號稱為位號。雙字節中,用高字節表示區號,低字節表示位號。非漢字圖形符號置于第1~11區,國標漢字集中有6763個漢字,又按其使用頻度、組詞能力以及用途大小分成一級常用漢字3755個,二級常用漢字3008個。一級漢字置于第16~55區,二級漢字置于第56~87區。
(3)漢字的機內碼。漢字的機內碼是供計算機系統內部進行存儲、加工處理、傳輸而統一使用的代碼,又稱為漢字內部碼或漢字內碼。不同的系統使用的漢字機內碼有可能不同。目前使用最廣泛的是一種為2B的機內碼,俗稱變形的國標碼。這種格式的機內碼是將國標GB 2312—80交換碼的2B的最高位分別置為1而得到的。機內碼的最大優點是表示簡單,且與交換碼之間有明顯的對應關系,同時也解決了中西文機內碼存在二義性的問題。
下面給出了“西”字由區位碼到機內碼的轉換過程示例。“西”的區位碼是46 87,為十進制表示。轉換為機器內碼的方法為:①每字節轉化為十六進制。②每字節高位置為1。③每字節加(20)16得機內碼。漢字“西”的機內碼則為(CEF7)16。轉換過程如圖2.2所示。

圖2.2 輸入“西”字時從區位碼到機內碼的轉換過程示意圖
(4)漢字的字形碼。漢字的字形碼是漢字字庫中存儲的漢字字形的數字化信息,用于漢字的顯示和打印。常用的輸出設備是顯示器與打印機。漢字字形庫可以用點陣和矢量來表示。目前漢字字形的產生方式大多是以點陣方式形成漢字,因此漢字的字形碼主要是指漢字字形點陣的代碼。
漢字字形點陣有16×16點陣、24×24點陣、32×32點陣、64×64點陣、96×96點陣、128×128點陣、256×256 點陣等。一個漢字方塊中行數、列數分得越多,描繪的漢字也就越細微,相應占用的存儲空間也就越多。漢字字形點陣中每個點的信息要用一位二進制碼來表示。對16×16 點陣的字形碼,需要用32B(16×16÷8=32)表示;24×24 點陣的字形碼需要用72B(24×24÷8=72)表示。
漢字字庫是將漢字字形數字化后,以二進制文件形式存儲在存儲器中而形成的漢字字模庫。漢字字模庫亦稱漢字字形庫,簡稱漢字字庫。
注意:國標碼用2字節表示1個漢字,每個字節只用后7位。計算機處理漢字時,不能直接使用國標碼,而要將最高位置為1,轉換成漢字機內碼,其原因是為了區別漢字碼和ASCII碼,當最高位是0時,表示為字符的ASCII碼,當最高位是1時,表示為漢字碼。
2.3.3 計算機中數的表示
在計算機中只能用數字化信息來表示數的正負,人們規定用“0”表示正號,用“1”表示負號。例如,在機器中用8位二進制碼表示一個數+90,其格式如圖2.3所示。而用8位二進制碼表示一個數-89,其格式如圖2.4所示。

圖2.3 +90的二進制碼

圖2.4 -89的二進制碼
在計算機內部,數字和符號都用二進制碼表示,兩者合在一起構成數的機內表示形式,稱為機器數,而它真正表示的數值稱為這個機器數的真值。
(1)機器數表示的數的范圍受設備限制。在計算機中,一般用若干個二進制位表示一個數或一條指令,把它們作為一個整體來處理、存儲和傳輸。這種作為一個整體來處理的二進制位串,稱為計算機字。表示數據的字稱為數據字,表示指令的字稱為指令字。
計算機是以字為單位進行處理、存儲和傳輸的,所以運算器中的加法器、累加器以及其他一些寄存器,都選擇與字長相同的位數。字長一定,則計算機數據字所能表示的數的范圍也就確定了。
例如:使用8位字長計算機,它可表示無符號整數的最大值是(255)10=(11111111)2。運算時,若數值超出機器數所能表示的范圍,就會停止運算和處理,這種現象稱為溢出。
(2)定點數。計算機中運算的數,有整數,也有小數,如何確定小數點的位置呢?通常有兩種約定:一種是規定小數點的位置固定不變,這時機器數稱為定點數;另一種是小數點的位置可以浮動,這時的機器數稱為浮點數。微型機多選用定點數。
數的定點表示是指數據字中的小數點的位置是固定不變的。小數點位置可以固定在符號位之后,這時數據字就表示一個純小數。假定機器字長為16位,符號占1位,數值部分占15位,故下面機器數其等效的十進制數為-2-15,如圖2.5所示。
如果把小數點位置固定在數據字的最后,這時,數據字就表示一個純整數。假設機器字長為16位,符號占1位,數值部分占15位,故下面機器數其等效的十進制數為+32767,如圖2.6所示。

圖2.5 定點小數

圖2.6 定點整數
定點表示法所能表示的數值范圍很有限,為了擴大定點數的表示范圍,可以通過編程技術,采用多個字節來表示一個定點數,如采用4B或8B等。
(3)浮點數。浮點表示法就是小數點在數中的位置是浮動的。在以數值計算為主要任務的計算機中,由于定點表示法所能表示的數的范圍很有限,不能滿足計算問題的需要,因此就要采用浮點表示法。在同樣字長的情況下,浮點表示法所表示的數的范圍就擴大了。
計算機中的浮點表示法包括兩個部分:一部分是階碼(表示指數,記做E);另一部分是尾數(表示有效數字,記做M)。設任意一個數N在機器中的表示方法如圖2.7所示,其中2為基數,E為階碼,M為尾數。

圖2.7 浮點數表示格式
由尾數部分隱含的小數點位置可知,尾數總是小于1的數字,它給出該浮點數的有效數字。尾數部分的符號位確定該浮點數的正負。階碼給出的總是整數,它確定小數點浮動的位數,若階符為正,則向右移動;若階符為負,則向左移動。
假設機器字長為32位,階碼為8位,尾數為24位,則其浮點數在機器中的表示方法如圖2.8所示。其中左邊1位表示階碼的符號,符號位后的7位表示階碼的大小。在后24位中,有1位表示尾數的符號,其余23位表示尾數的大小。浮點數表示法對尾數有如下規定:
1/2≤M<1
即要求尾數中第1位數不為零,這樣的浮點數稱為規格化數。

圖2.8 浮點數表示示例
當浮點數的尾數為零或者階碼為最小值時,機器通常規定:把該數看做零,稱為“機器零”。在浮點數的表示和運算中,當一個數的階碼大于機器所能表示的最大碼時,產生“上溢”現象。產生上溢時,機器一般不再繼續運算而轉入“溢出”處理。當一個數的階碼小于機器所能代表的最小階碼時產生“下溢”現象。產生下溢時,一般當做機器零來處理。
習題
一、選擇題
1.在計算機內部,數據是以_____形式加工、處理和傳送的。
A.二進制數
B.八進制數
C.十六進制數
D.十進制數
2.二進制數10011010和00101011進行邏輯乘運算(即“與”運算)的結果是。
A.00001010
B.10111011
C.11000101
D.11111111
3.在計算機內部,用來傳送、存儲、加工處理的數據或指令都是用_____。
A.區位碼
B.ASCII碼
C.十進制
D.二進制
4.將十進制數147轉換成2字節的二進制數是_____。
A.0000000010010011
B.000000001100111
C.10010011
D.1100111
5.與十進制數97等價的八進制數是。
A.1100001
B.141
C.61
D.111
6.將十進制數107轉換成十六進制數是。
A.6B
B.113
C.B5
D.11B
7.將二進制數1110.01轉換成十進制數是。
A.16.1
B.32.125
C.14. 25
D.70.02
8.將八進制數1073轉換成十進制數是。
A.1028
B.571
C.256
D.512
9.將十六進制數2F8轉換成十進制數是。
A.512
B.1024
C.496
D.760
10.將二進制數101111101.0101轉換成八進制數是。
A.155.11
B.555.21
C.575.24
D.155.21
11.將二進制數101111101.0101轉換成十六進制數是。
A.17C.5
B.555.21
C.575.24
D.17D.5
二、填空題
1.將下列十進制數轉換成相應的二進制數。
(84)10=( )2
(57.687)10=( )2
2.將下列二進制數轉換成相應的十進制數、八進制數、十六進制數。
(1101101)2=( )10=( )8=( )16
(10101.1011)2=( )10=( )8=( )16
3.計算機中的最小數據單位是。
4.在計算機中,一個字節由_____個二進制位組成。一個西文字符用_____個字節表示,一個漢字用_____個字節表示。
5.1MB的存儲空間最多能存儲_____個漢字。
6.存放16個16×16點陣的漢字字模,需占存儲空間為_____。
7.3位二進制可以表示_____種狀態。
8.32MB等于_____字節。
9.字符‘A’的ASCII碼為_____,'a'的ASCII碼為_____。
10.漢字“啊”的區位碼為_____。
三、簡答題
1.計算機為什么要采用二進制表示數據?
2.計算機中常用的信息編碼有哪幾種?請列出它們的名稱。
3.什么是計算機外碼和內碼?簡述它們之間的區別。
4.說明浮點數表示數據的原理。
- WTO與農產品貿易法律制度
- 電子商務網頁設計與制作(微課版)
- Pro/ENGINEER中文野火版5.0機械設計應用教程
- 中央財經大學政府管理學院行政管理學(復試)歷年考研真題及詳解
- 楊豈深《英國文學選讀Book 3》筆記和考研真題詳解
- 古代漢語
- 巖土工程原位測試(第二版)
- 2020年天津市選聘大學生村官考試《申論》考點精講及典型題(含歷年真題)詳解
- 勞動關系與勞動法
- 商務談判
- 2019年證券公司高級管理人員資質測試復習全書【大綱詳解+模擬試題】
- 天津大學無機化學教研室《無機化學》(第4版)配套題庫【名校考研真題+課后習題+章節題庫+模擬試題】(下冊)
- 蔡毅《俄譯漢教程(下)》(增修本)筆記和課后習題詳解
- 知識產權法學
- 政治經濟學原理(第2版)