任務4 了解計算機中的數制和編碼
步驟1:了解信息和數據
信息(Information)在現實世界中是廣泛存在的,例如,數字、字母、各種符號、圖表、聲音、圖片等。但是,所有的信息計算機都不能直接處理,因為計算機內部采用二進制,也就是說,計算機內部只認識“0”和“1”兩種信息。因此,任何形式的信息都必須通過一定的轉換方式轉變成計算機能直接處理的數據,我們將這個過程稱為“數字化”。
數據(Data)是在計算機內部存儲、處理和傳輸的各種“值”,對用戶來說是信息。換句話說,數據是信息在計算機內部的表示形式。信息處理也就是數據處理。
信息技術(IT)就是對信息進行采集、轉換、加工、處理、存儲、傳輸的技術,它是由計算機技術和現代通信技術來共同演繹的,其中計算機技術充當著核心的角色。
步驟2:了解進位計數制
1.進位計數制
數制是人們對數量計數的一種統計規律。將數字符號按順序排列成數位并遵照某種從低位到高位的進位方式計數來表示數制的方法稱為進位計數制,簡稱計數制。進位計數制是一種計數方法,日常生活中廣泛使用的是十進制,此外還大量使用其他進位計數制,如二進制、八進制、十六進制等。
那么,不同計數進位制的數怎么表示呢?為區分不同的數制,約定對于任一R進制的數N記作(N)R。如(1100)2表示二進制數1100,(567)8表示八進制數567,(89AC)16表示十六進制數89AC。不用括號及下標的數默認為十進制數。此外,還有一種表示數制的方法,即在數字的后面使用特定的字母表示該數的進制。具體方法是:D(Decimal)表示十進制,B(Binary)表示二進制,O(Octal)表示八進制,H(Hex)表示十六進制。若某數碼后面未加任何字母,則默認為十進制數。
無論使用哪種計數制,數制的表示都包含基數和位權兩個基本的要素。
①基數:指某種進位計數制中允許使用的基本計數符號的個數。
②位權:指在某種進位計數制表示的數中用于表明不同數位上數值大小的一個固定常數。不同數位有不同的位權,某一個數位的數值等于這一位的數字符號與該位對應的位權相乘。R進制數的位權是R的整數次冪。例如,十進制數的位權是10的整數次冪,其個位的位權是100,十位的位權是101。
2.十進制
在日常生活中,人們習慣于采用十進制計數。
例如,一個十進制數666.66,其中每個位代表的含義如下:

通過上面的例子,可以總結出十進制計數的規律:
(1)一個十進制數字有10個計數的數碼:0、1、2、3、4、5、6、7、8、9,我們稱之為基數為10。
(2)逢十進一。
(3)數碼在數字中所處的位置不同,則它所代表的數值也不同。例如,上例的數碼6,在個位數上表示6,在十位數上表示60,在百位數上表示600……這里的個(100)、十(101)、百(102)……稱為位權。可見位權的大小是以基數為底,以數碼所在位置序號為指數的整數次冪。
因此,一個十進制數可以寫成按位權展開的一個多項式。例如:
666.66=6×102+6×101+6×100+6×10-1+6×10-2
3.二進制
計算機內部主要采用二進制處理信息,任何信息都必須轉換成二進制形式后才能由計算機處理。
二進制所用到的數碼個數有兩個,分別是0、1,稱之為基數為2,逢二進一。二進制數的位權是2的整數次冪。例如,一個二進制數10110.101按位權展開的多項式為
(10110.101)2=1×24+0×23+1×22+1×21+0×20+1×2-1+0×2-2+1×2-3
二進制數的運算規律如表1-2所示。
表1-2 二進制的運算規則

由此可見,二進制具有運算規則簡單且物理實現容易等優點。因為二進制中只有0和1兩個數字符號,因此可以用電子元器件的兩種不同狀態來表示二進制數。例如,可以用晶體管的截止和導通,或者電平的高和低表示1和0等,因此在計算機系統中普遍采用二進制。
但是,二進制又具有明顯的缺點,即數的位數太長且字符單調,使得書寫、記憶和閱讀不方便。為了克服二進制的缺點,人們在書寫指令,以及輸入和輸出程序等時,通常采用八進制數和十六進制數作為二進制數的縮寫。
4.八進制
八進制所用到的數碼個數有8個,分別是0、1、2、3、4、5、6、7,稱之為基數為8,逢八進一。
5.十六進制
十六進制所用到的數碼個數為16個,分別是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,稱之為基數為16,逢十六進一。
步驟3:了解計數制間的轉換
各計數制之間可以相互轉換,表1-3所示為各進制間數制對照表。
表1-3 進制間數值對照表

每一個二進制數、八進制數或十六進制數都可以寫成按位權展開的一個多項式。
【例1】寫出二進制數(1101.11)2的按位權展開式。
解:(1101.11)2=1×23+1×22+0×21+1×20+1×2-1+1×2-2其中,23、22、21、20、2-1、2-2是二進制數相應位的位權值。
【例2】寫出八進制數(521)8的按位權展開式。
解:(521)8=5×82+2×81+1×80其中,82,81,80是八進制數相應位的位權值。
【例3】寫出十六進制數(2BD)16的按位權展開式。
解:(2BD)16=2×162+11×161+13×160其中,162、161、160是十六進制數相應位的位權值。
1.其他進制數轉換成十進制
方法:將其他進制數按位權展開后再相加即可。
【例4】把二進制數(1101.11)2轉換成十進制數。
解:(1101.11)2=1×23+1×22+0×21+1×20+1×2-1+1×2-2=(13.75)10
【例5】把八進制數(521)8轉換成十進制數。
解:(521)8=5×82+2×81+1×80=(337)10
【例6】把十六進制數(2A6)16轉換成十進制數。
解:(2A6)16=2×162+A×161+6×160=2×256+10×16+6×1=(678)10
2.十進制數轉換成二進制數
方法:將一個十進制數(包含整數部分和小數部分)轉換成二進制數時,先將十進制數的整數部分轉換成二進制整數,采用的方法是“除2取余逆序”的方法,再將十進制數的小數部分轉換成二進制小數,采用的方法是“乘2取整順序”的方法。
【例7】將十進制數(214.625)10轉換成二進制數。
解:第一步,先將十進制整數部分(214)10轉換成二進制數,采用“除2取余逆序”的方法。

所以(214)10=(11010110)2。
第二步,再將十進制小數(0.625)10轉換成二進制小數,采用“乘2取整順序”的方法。

所以,(0.625)10=(0.101)2,故(214.625)10=(11010110.101)2。
提示與技巧
多數情況下,很多十進制小數連續乘以2取整后,結果仍不為0,此時只取二進制近似值到指定位數。
3.二進制數與八進制數之間的轉換
(1)將二進制數轉換成八進制數
方法:3位并1位。以小數點為中心,分別向左、向右,每3位二進制數為一組用一個八進制數碼來表示(不足3位的用0補足,其中整數部分左補0,小數部分右補0)。
【例8】將二進制數(10010110.10101)2轉換成八進制數。

故(10010110.10101)2=(226.52)8。
(2)將八進制數轉換成二進制數
方法:1位拆3位。將每個八進制數碼用3位二進制數來書寫。
【例9】將八進制數(643.27)8轉換成二進制數。

故(653.27)8=(110100011.010111)2。
4.二進制數與十六進制數之間的轉換
(1)二進制數轉換成十六進制數
方法:4位并1位。從小數點開始,分別向左、向右,每4位二進制數為一組用一個十六進制數碼來表示(不足4位的用0補足,其中整數部分左補0,小數部分右補0)。
【例10】將二進制數(110110101.11101)2轉換成十六進制數。

故(110110101.11101)2=(1B5.E8)16
(2)十六進制數轉換成二進制數
方法:一位拆四位。將每個十六進制數碼用4位二進制數來表示。
【例11】將十六進制數(2BD.AC)16轉換成二進制數。

故(2BD.AC)16=(1010111101.101011)2
步驟4:了解計算機的數據單位
在計算機內部,常用的數據單位有位、字節和字等。
1.位
位(Bit)是指二進制數的一個位,音譯為比特。位是表示計算機數據的最小單位,一個位就是二進制數的一個“0”或一個“1”。
2.字節
字節(Byte,簡寫為B)是表示計算機數據的基本單位,通常把8個二進制位作為一個字節,即1B=8bit或1B=8b。
3.字
字(Word)是指計算機內部一次存儲、傳送、處理操作的信息單位。字所含有的二進制位數稱為字長,它直接關系到計算機的計算精度、功能和速度。例如,字長為64位的計算機,即指該計算機內部一次能夠傳送和運算64位的二進制數。
4.其他數據單位
為表示存儲器容量大小,除了以字節為單位外,常用的容量單位還有:KB、MB、GB、TB、EB、ZB和YB。它們之間的換算關系為:
1KB=1024B=210B
1MB=1024KB=10242B=220B
1GB=1024MB=10243B=230B
1TB=1024GB=10244B=240B
……
步驟5:了解計算機常用信息編碼
1.ASCII碼
ASCII碼全名為American Standard Code for Information Interchange,即美國國家信息交換標準碼,原為美國國家標準,現已成為在世界范圍內通用的字符編碼標準。
ASCII碼由7位二進制數組成,因此一共定義了27=128個符號,其中有33個控制碼,位于表的左首兩列和右下角位置,其余95個為數字、大小寫英文字母和專用符號的編碼。例如,字母A的ASCII碼為1000001(十進制為65)。表1-4列出了ASCII碼的編碼表。
表1-4 ASCII編碼表

2.漢字的編碼
(1)漢字交換碼(國標碼)
1981年,我國頒布了《中華人民共和國國家標準信息交換漢字編碼》,代號為GB 2312—1980。它是漢字交換碼的國家標準,又稱“國標碼”。該標準收錄了漢字和圖形符號7445個,包括6763個常用漢字和682個圖形符號,其中常用漢字又分為兩個等級,一級漢字有3755個,二級漢字有3008個。一級漢字按拼音排序,二級漢字按部首排序。
國標碼規定,每個字符由一個2字節的二進制代碼組成。其中,每個字節的最高位恒為“0”,其余7位用于組成各種不同的編碼。因此,2個字節的代碼共可表示128×128=16384個符號。目前,國標碼僅使用了其中7000多個編碼,還可擴充。
(2)漢字機內碼
漢字機內碼簡稱內碼,是計算機內部存儲漢字時所用的編碼。計算機既要處理漢字,又要處理西文。為了在計算機中區別某個編碼是漢字還是西文,可以利用一個字節編碼的最高位來區別,若最高位為“0”,則視為ASCII碼字符;若最高位為“1”,則視為漢字字符。
所以,在計算機內部要能同時處理漢字和西文,就必須在國標碼的基礎上,把2個字節的最高位分別由“0”改“1”,由此構成了漢字機內碼。漢字機內碼與國標碼的關系如下(H表示十六進制):
漢字機內碼第一字節=國標碼第一字節+80H
漢字機內碼第二字節=國標碼第二字節+80H
例如,漢字“吧”的國際碼為3049H,即它的國際碼第一字節為00110000,國際碼第二字節為01001001。那么,漢字“吧”的機內碼為BOC9H,即它的機內碼第一字節為10110000,機內碼第二字節為11001001。
(3)漢字輸入碼(外碼)
漢字輸入碼是指從鍵盤上輸入的代表漢字的編碼,又稱漢字外碼。例如,區位碼、五筆字型碼、拼音碼、表形碼等。
當用戶向計算機輸入漢字時,存入計算機內部的總是它的機內碼,與所采用的輸入法無關。輸入碼僅是供用戶選用的編碼,即“外碼”,而機內碼則是計算機識別的“內碼”,其碼值是唯一的。
為了便于使用,GB 2312—1980國家標準將其中的漢字和其他符號按照一定的規則排列成為一個大的表格,在這個表格中,每一(橫)行稱為一個“區”,每一(豎)列稱為一個“位”,整個表格共有94區,每區有94位,并將“區”和“位”用十進制數字進行編號:即區號為01~94,位號為01~94。
根據漢字的國家標準,用兩個字節(16位二進制數)表示一個漢字。但使用16位二進制數容易出錯,比較困難,因而在使用中都將其轉換為十六進制數使用。國標碼是一個4位十六進制數,區位碼則是一個4位的十進制數,每個國標碼或區位碼都對應著一個唯一的漢字或符號,但因為十六進制數很少用到,所以大家常用的是區位碼,它的前兩位叫作區碼,后兩位叫作位碼。
漢字區位碼與國標碼的關系如下(H表示十六進制):
漢字國標碼第一字節=區位碼第一字節+20H
漢字國標碼第二字節=區位碼第二字節+20H
(4)漢字字形碼
在輸出漢字(例如,顯示或打印漢字)時要用到漢字字形碼。一個漢字的字形點陣數據構成了該漢字的字形碼,所有漢字字形碼的集合稱為漢字字形庫,簡稱漢字庫。例如,漢字“你”的字形碼如圖1-2所示。

圖1-2 漢字“你”的字形碼
漢字的字形碼分為16×16點陣、24×24點陣、32×32點陣、48×48點陣等,甚至還有108×108點陣,576×576點陣的字庫。表示一個漢字字形的點數越多,打印的字體越美觀,但漢字占用的存儲空間也越大。例如,一個16×16點陣的漢字占用32B,則兩級漢字共占用約256KB。其他點陣字庫占用存儲空間的情況,讀者可自行計算。
一般情況下,顯示漢字使用16×16點陣,打印漢字可選用24×24、32×32或48×48點陣的字庫,而108×108點陣、576×576點陣字庫主要用于精密照排系統中,且需要龐大的存儲容量。
各種漢字編碼的關系如圖1-3所示。

圖1-3 漢字編碼之間的關系
案例拓展
案例:認識計算機的智能化。
案例描述:了解1997年國際象棋大師卡斯帕羅夫和計算機“深藍”間“人機大戰”、智能家居等計算機智能化方面的知識。