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

第2章 計(jì)算機(jī)中信息的表示

數(shù)制是用一組固定的數(shù)字和一套統(tǒng)一的規(guī)則來(lái)表示數(shù)目的方法。計(jì)算機(jī)在進(jìn)行信息處理時(shí),所要處理的信息必須首先在計(jì)算機(jī)中進(jìn)行存儲(chǔ)。本章將詳細(xì)地介紹數(shù)值、字符、漢字在計(jì)算機(jī)中的存儲(chǔ)形式,以及不同數(shù)制之間的轉(zhuǎn)換規(guī)則,要求讀者掌握計(jì)算機(jī)中信息的表示方式。

2.1 數(shù)制

2.1.1 數(shù)制的基本概念

數(shù)制是用一組固定的數(shù)字和一套統(tǒng)一的規(guī)則來(lái)表示數(shù)目的方法。

按照進(jìn)位方式計(jì)數(shù)的數(shù)制叫進(jìn)位計(jì)數(shù)制。人們?nèi)粘I钪薪?jīng)常使用十進(jìn)制數(shù),十進(jìn)制數(shù)即“逢十進(jìn)一”,而在生活中也會(huì)遇到其他進(jìn)制,如六十進(jìn)制(每分鐘60秒,每小時(shí)60分鐘,即逢六十進(jìn)一)、十二進(jìn)制、十六進(jìn)制等。

進(jìn)位計(jì)數(shù)涉及基數(shù)與各數(shù)位的位權(quán)。十進(jìn)制計(jì)數(shù)的特點(diǎn)是“逢十進(jìn)一”,在一個(gè)十進(jìn)制數(shù)中,需要用到10個(gè)數(shù)字符號(hào)0~9,其基數(shù)為10,即十進(jìn)制數(shù)中的每一位是這10個(gè)數(shù)字符號(hào)之一。在任何進(jìn)制中,一個(gè)數(shù)的每個(gè)位置都有一個(gè)權(quán)值。

基數(shù)是指該進(jìn)制中允許選用的基本數(shù)碼的個(gè)數(shù)。每一種進(jìn)制都有固定數(shù)目的計(jì)數(shù)符號(hào)。

十進(jìn)制:基數(shù)為10,10個(gè)記數(shù)符號(hào)分別為0、1、2、…、9。每一個(gè)數(shù)碼符號(hào)根據(jù)它在這個(gè)數(shù)中所在的位置(數(shù)位),按“逢十進(jìn)一”來(lái)決定其實(shí)際數(shù)值。

二進(jìn)制:基數(shù)為2,2個(gè)記數(shù)符號(hào)分別為0和1。每個(gè)數(shù)碼符號(hào)根據(jù)它在這個(gè)數(shù)中的數(shù)位,按“逢二進(jìn)一”來(lái)決定其實(shí)際數(shù)值。

八進(jìn)制:基數(shù)為8,8個(gè)記數(shù)符號(hào)分別為0、1、2、…、7。每個(gè)數(shù)碼符號(hào)根據(jù)它在這個(gè)數(shù)中的數(shù)位,按“逢八進(jìn)一”來(lái)決定其實(shí)際的數(shù)值。

十六進(jìn)制:基數(shù)為16,16個(gè)記數(shù)符號(hào)為0~9、A、B、C、D、E、F。其中A~F對(duì)應(yīng)十進(jìn)制數(shù)的10~15。每個(gè)數(shù)碼符號(hào)根據(jù)它在這個(gè)數(shù)中的數(shù)位,按“逢十六進(jìn)一”決定其實(shí)際的數(shù)值。

一個(gè)數(shù)碼處在不同位置上,所代表的值也不同,如數(shù)字6在十位數(shù)位置上表示60,在百位數(shù)上表示600,而在小數(shù)點(diǎn)后1位表示0.6,可見(jiàn)每個(gè)數(shù)碼所表示的數(shù)值等于該數(shù)碼乘以一個(gè)與數(shù)碼所在位置相關(guān)的常數(shù),這個(gè)常數(shù)叫做位權(quán)。位權(quán)的大小是以基數(shù)為底、數(shù)碼所在位置的序號(hào)為指數(shù)的整數(shù)次冪。十進(jìn)制數(shù)的個(gè)位數(shù)位置的位權(quán)是100,十位數(shù)位置上的位權(quán)為101,小數(shù)點(diǎn)后1位的位權(quán)為10-1,其他的依次類推。

十進(jìn)制數(shù)(34958.34)10=3×104+4×103+9×102+5×101+8×100+3×10-1+4×10-2

小數(shù)點(diǎn)左邊:從右向左,每一位對(duì)應(yīng)的權(quán)值分別為100、101、102、103、104

小數(shù)點(diǎn)右邊:從左向右,每一位對(duì)應(yīng)的權(quán)值分別為10-1、10-2。

二進(jìn)制數(shù)(100101.01)2=1×25+0×24+0×23+1×22+0×21+1×20+0×2-1+1×2-2

小數(shù)點(diǎn)左邊:從右向左,每一位對(duì)應(yīng)的權(quán)值分別為20、21、22、23、24、25

小數(shù)點(diǎn)右邊:從左向右,每一位對(duì)應(yīng)的權(quán)值分別為2-1、2-2。

不同的進(jìn)制由于其進(jìn)位的基數(shù)不同,其位權(quán)值也是不同的。

2.1.2 二進(jìn)制及其運(yùn)算

1.二進(jìn)制的特點(diǎn)

十進(jìn)制是人類最為方便的進(jìn)制表示,但十進(jìn)制數(shù)應(yīng)用在計(jì)算機(jī)上卻遇到了表示上的困難,10個(gè)不同符號(hào)的表示和運(yùn)算很復(fù)雜。在計(jì)算機(jī)中采用二進(jìn)制數(shù)的原因如下:

(1)可行性。采用二進(jìn)制,只有0和1兩個(gè)狀態(tài),需要表示0、1兩種狀態(tài)的電子器件很多,如開(kāi)關(guān)的接通和斷開(kāi)、晶體管的導(dǎo)通和截止、磁元件的正負(fù)剩磁、電位電平的高與低等都可表示0、1兩個(gè)數(shù)碼。使用二進(jìn)制,電子器件具有實(shí)現(xiàn)的可行性。

(2)簡(jiǎn)易性。二進(jìn)制數(shù)的運(yùn)算規(guī)則少,運(yùn)算簡(jiǎn)單,使計(jì)算機(jī)運(yùn)算器的硬件結(jié)構(gòu)大大簡(jiǎn)化(十進(jìn)制的乘法九九口訣表有55條公式,而二進(jìn)制乘法只有4條規(guī)則)。

(3)邏輯性。由于二進(jìn)制0和1正好與邏輯代數(shù)的假(false)和真(true)相對(duì)應(yīng),有邏輯代數(shù)的理論基礎(chǔ),用二進(jìn)制數(shù)表示二值邏輯很自然。

2.數(shù)的二進(jìn)制表示

在客觀世界中,事物的數(shù)量是客觀存在的,但表示的方法可以多種多樣。

例如,345用十進(jìn)制數(shù)碼可以表示為(345)10=3×102+4×101+5×100,這里每個(gè)固定位置上的計(jì)數(shù)單位稱為位權(quán)。十進(jìn)制計(jì)數(shù)中個(gè)位上的計(jì)數(shù)單位為100=1,從個(gè)位向左,依次為101、102、103、…向右依次為10-1、10-2、…它用二進(jìn)制數(shù)碼可以表示為

二進(jìn)制計(jì)數(shù)中個(gè)位上的計(jì)數(shù)單位也是1,即20=l,從個(gè)位向左依次為21、22、23、…向右依次為2-1、2-2、…

3.二進(jìn)制數(shù)的算術(shù)運(yùn)算

二進(jìn)制數(shù)的算術(shù)運(yùn)算與十進(jìn)制數(shù)的算術(shù)運(yùn)算類似,但其運(yùn)算規(guī)則更為簡(jiǎn)單,其規(guī)則如表2.1所示。

表2.1 二進(jìn)制數(shù)的運(yùn)算規(guī)則

(1)二進(jìn)制數(shù)的加法運(yùn)算。

【例2.1】 二進(jìn)制數(shù)1001與1011相加。

算式:被加數(shù) (1001)2……(9)10

加數(shù) (1011)2……(11)10

進(jìn)位 +) 111

和數(shù) (10100)2……(20)10

結(jié)果:(1001)2+(1011)2=(10100)2

由算式可以看出,兩個(gè)二進(jìn)制數(shù)相加時(shí),每一位最多有3個(gè)數(shù)(本位被加數(shù)、加數(shù)和來(lái)自低位的進(jìn)位)相加,按二進(jìn)制數(shù)的加法運(yùn)算法則得到本位相加的和及向高位的進(jìn)位。

(2)二進(jìn)制數(shù)的減法運(yùn)算。

【例2.2】 二進(jìn)制數(shù)11000001與00101101相減。

算式:被減數(shù) (11000001)2……(193)10

減數(shù) (00101101)2……(45)10

借位 -) 1111

差數(shù) (10010100)2……(148)10

結(jié)果:(11000001)2-(11000001)2 =(10010100)2

由算式可以看出,兩個(gè)二進(jìn)制數(shù)相減時(shí),每一位最多有3個(gè)數(shù)(本位被減數(shù)、減數(shù)和向高位的借位)相減,按二進(jìn)制數(shù)的減法運(yùn)算法則得到本位相減的差數(shù)和向高位的借位。

4.二進(jìn)制數(shù)的邏輯運(yùn)算

計(jì)算機(jī)中的邏輯關(guān)系是一種二值邏輯,邏輯運(yùn)算的結(jié)果只有“真”或“假”兩個(gè)值。二值邏輯很容易用二進(jìn)制數(shù)的“0”和“1”來(lái)表示,一般用“1”表示真,用“0”表示假。邏輯值的每一位表示一個(gè)邏輯值,邏輯運(yùn)算是按對(duì)應(yīng)位進(jìn)行的,每位之間相互獨(dú)立,不存在進(jìn)位和借位關(guān)系,運(yùn)算結(jié)果也是邏輯值。

三種基本的邏輯運(yùn)算。邏輯運(yùn)算有“或”、“與”和“非”三種。其他復(fù)雜的邏輯關(guān)系都可以由這三個(gè)基本邏輯關(guān)系組合而成。

(1)邏輯“或”。用于表示邏輯“或”關(guān)系的運(yùn)算,“或”運(yùn)算符可用+、OR、∪或∨表示。其運(yùn)算規(guī)則如下:

0+0=0

0+1=1

1+0=1

1+1=1

即兩個(gè)邏輯位進(jìn)行“或”運(yùn)算,只要有一個(gè)為“真”,邏輯運(yùn)算的結(jié)果就為“真”。

【例2.3】 如果A=1001111,B=1011101,求A+B。

步驟如下:

結(jié)果:A+B=1001111+1011101=1011111

(2)邏輯“與”。用于表示邏輯與關(guān)系的運(yùn)算,稱為“與”運(yùn)算,與運(yùn)算符可用AND、· 、×、∩或∧表示。其運(yùn)算規(guī)則如下:

0×0=0

0×1=0

1×0=0

1×1=1

即兩個(gè)邏輯位進(jìn)行“與”運(yùn)算,只要有一個(gè)為“假”,邏輯運(yùn)算的結(jié)果就為“假”。

【例2.4】 如果A=1001111,B=1011101,求A×B。

步驟如下:

結(jié)果:A×B=1001111×1011101=1001101

(3)邏輯“非”。用于表示邏輯非關(guān)系的運(yùn)算,該運(yùn)算常在邏輯變量上加一橫線表示。其運(yùn)算規(guī)則如下:

即對(duì)邏輯位求反。

2.2 不同數(shù)制間的轉(zhuǎn)換

在計(jì)算機(jī)內(nèi)部,數(shù)據(jù)和程序都用二進(jìn)制數(shù)來(lái)表示和處理,但計(jì)算機(jī)的輸入/輸出還是用十進(jìn)制數(shù)來(lái)表示,這就存在數(shù)制間的轉(zhuǎn)換問(wèn)題,轉(zhuǎn)換過(guò)程是通過(guò)機(jī)器軟件系統(tǒng)自動(dòng)完成的,但我們應(yīng)當(dāng)懂得數(shù)制轉(zhuǎn)換的原理。

2.2.1 R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)

R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)時(shí),可以采用按權(quán)展開(kāi)各項(xiàng)相加的法則。

ln位整數(shù)m位小數(shù)其各位數(shù)為:(Kn-1Kn-2K2K1K0.K-1K-m),則l可以表示為:

當(dāng)一個(gè)R進(jìn)制數(shù)按權(quán)展開(kāi)求和后,也就得到了該數(shù)值所對(duì)應(yīng)的十進(jìn)制數(shù)。

【例2.5】 將二進(jìn)制數(shù)11011.01轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)。

(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】 將八進(jìn)制數(shù)33.2轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)。

(33.2)8=(3×81+3×80+2×8-1)10=(27.25)10

【例2.7】 將十六進(jìn)制數(shù)1B.4H轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)。

(1B.4)16=(1×161+11×160+4×16-1)10=(27.25)10

2.2.2 十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制數(shù)

基數(shù)乘除法

將十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制數(shù),采用基數(shù)乘除法實(shí)現(xiàn),整數(shù)部分和小數(shù)部分須分別遵守不同的轉(zhuǎn)換規(guī)則:

① 對(duì)整數(shù)部分,采用除R取余法,即整數(shù)部分不斷除以R取余數(shù),直到商為0為止,最先得到的余數(shù)為最低位,最后得到的余數(shù)為最高位。

② 對(duì)小數(shù)部分,采用乘R取整法,即小數(shù)部分不斷乘以R取整數(shù),直到小數(shù)為0或達(dá)到有效精度為止,最先得到的整數(shù)為最高位(最靠近小數(shù)點(diǎn)),最后得到的整數(shù)為最低位。

1.十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)

十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),基數(shù)為2,故對(duì)整數(shù)部分除2取余,對(duì)小數(shù)部分乘2取整。為了將一個(gè)既有整數(shù)部分又有小數(shù)部分的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),可以分別將其整數(shù)部分和小數(shù)部分進(jìn)行轉(zhuǎn)換,然后再進(jìn)行組合。

【例2.8】 將(35.25)10轉(zhuǎn)換成二進(jìn)制數(shù)。

整數(shù)部分:除2取余法。

注意:第一次得到的余數(shù)是二進(jìn)制數(shù)的最低位,最后一次得到的余數(shù)是最高位。

也可用如下方式直觀地表示計(jì)算過(guò)程。

小數(shù)部分:乘2取整法。

注意:一個(gè)十進(jìn)制小數(shù)不一定能完全準(zhǔn)確地轉(zhuǎn)換成二進(jìn)制小數(shù),這時(shí)可以根據(jù)精度要求只轉(zhuǎn)換到小數(shù)點(diǎn)后某一位即可。將其整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換,然后組合起來(lái)得(35.25)10=(100011.01)2

2.十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)

八進(jìn)制數(shù)碼的基本特征是:用8 個(gè)不同符號(hào)0、1、2、3、4、5、6、7 組成的符號(hào)串表示數(shù)量,相鄰兩個(gè)符號(hào)之間遵循“逢八進(jìn)一”的原則,即各位上的位權(quán)是基數(shù)8的若干次冪。

【例2.9】 將十進(jìn)制數(shù)(1725.32)10轉(zhuǎn)換成八進(jìn)制數(shù)(轉(zhuǎn)換結(jié)果取3位小數(shù))。

十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù),基數(shù)為8,故對(duì)整數(shù)部分除8取余,對(duì)小數(shù)部分乘8取整。為了將一個(gè)既有整數(shù)部分又有小數(shù)部分的十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù),可以將其整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換,然后再組合。

整數(shù)部分:除8取余法。

小數(shù)部分:乘8取整法。

得(1725.32)10≈(3275.243)8

3.十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)

十六進(jìn)制數(shù)碼的基本特征是:用16個(gè)不同符號(hào)0~9和A、B、C、D、E、F組成的符號(hào)串表示數(shù)量,相鄰兩個(gè)符號(hào)之間遵循“逢十六進(jìn)一”的原則,即各位上的位權(quán)是基數(shù)16的若干次冪。

將十進(jìn)制整數(shù)轉(zhuǎn)換成十六進(jìn)制整數(shù)可以采用“除16 取余”法;將十進(jìn)制小數(shù)轉(zhuǎn)換成十六進(jìn)制小數(shù)可以采用“乘16取整”法。如果十進(jìn)制數(shù)既含有整數(shù)部分又含有小數(shù)部分則應(yīng)分別轉(zhuǎn)換后再組合起來(lái)。

【例2.10】 將(237.45)10轉(zhuǎn)換成十六進(jìn)制數(shù)(取3位小數(shù))。

整數(shù)部分:除16取余法。

小數(shù)部分:乘16取整法。

得(237.45)10 ≈(ED.733)16

2.2.3 二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)、十六進(jìn)制數(shù)

二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)碼間的關(guān)系:8和16都是2的整數(shù)次冪,即8=23,16=24,因此3位二進(jìn)制數(shù)相當(dāng)于l位八進(jìn)制數(shù),4位二進(jìn)制數(shù)相當(dāng)于l位十六進(jìn)制數(shù),如表2.2所示,它們之間的轉(zhuǎn)換關(guān)系也相當(dāng)簡(jiǎn)單。由于二進(jìn)制數(shù)表示數(shù)值的位數(shù)較長(zhǎng),因此常用八進(jìn)制數(shù)、十六進(jìn)制數(shù)來(lái)表示二進(jìn)制數(shù)。

表2.2 二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系表

將二進(jìn)制數(shù)以小數(shù)點(diǎn)為中心分別向兩邊分組,轉(zhuǎn)換成八(或十六)進(jìn)制數(shù),按每3(或4)位為一組,整數(shù)部分向左分組,不足位數(shù)左補(bǔ)0。小數(shù)部分向右分組,不足部分右邊加0補(bǔ)足,然后將每組二進(jìn)制數(shù)轉(zhuǎn)化成八(或十六)進(jìn)制數(shù)即可。

【例2.11】 將二進(jìn)制數(shù)(11101110.00101011)2轉(zhuǎn)換成八進(jìn)制數(shù)、十六進(jìn)制數(shù)。

2.2.4 八進(jìn)制數(shù)、十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)

將每位八(或十六)進(jìn)制數(shù)展開(kāi)為3(或4)位二進(jìn)制數(shù)。

【例2.12】{L-End}

【例2.13】{L-End}

整數(shù)前的高位零和小數(shù)后的低位零可取消。

在各種進(jìn)制轉(zhuǎn)換中,最為重要的是二進(jìn)制數(shù)與十進(jìn)制數(shù)之間的轉(zhuǎn)換計(jì)算,以及八進(jìn)制數(shù)、十六進(jìn)制數(shù)與二進(jìn)制數(shù)之間的直接對(duì)應(yīng)轉(zhuǎn)換。

2.3 計(jì)算機(jī)中的數(shù)據(jù)及其編碼

數(shù)據(jù)(data)是表征客觀事物的、可以被記錄而且能夠被識(shí)別的各種符號(hào),包括字符、符號(hào)、表格、聲音、圖形和圖像等。簡(jiǎn)而言之,一切可以被計(jì)算機(jī)加工、處理的對(duì)象都可以被稱之為數(shù)據(jù)。數(shù)據(jù)可在物理介質(zhì)上記錄或傳輸,并通過(guò)外圍設(shè)備被計(jì)算機(jī)接收,經(jīng)過(guò)處理而得到結(jié)果。

數(shù)據(jù)能被輸入計(jì)算機(jī)加以處理,包括存儲(chǔ)、傳送、排序、歸并、計(jì)算、轉(zhuǎn)換、檢索、制表和模擬等操作,以得到滿足人們需要的結(jié)果。數(shù)據(jù)經(jīng)過(guò)解釋并賦予一定的意義后,便成為信息。這里所說(shuō)的數(shù)據(jù)指的是廣義的數(shù)據(jù),可以用來(lái)表示:

● 事物的數(shù)量,如產(chǎn)量、資金、職工人數(shù)和物品數(shù)量等;

● 事物的名稱或代號(hào),如廠名、車間名、學(xué)校名和職工名等;

● 事物抽象的性質(zhì),如人體的健康狀況、文化程度、政治面貌和工作能力等。

數(shù)據(jù)有兩種形式。一種形式為人類可讀形式的數(shù)據(jù),簡(jiǎn)稱人讀數(shù)據(jù)。因?yàn)閿?shù)據(jù)首先是由人類進(jìn)行收集、整理、組織和使用的,這就形成了人類獨(dú)有的語(yǔ)言、文字和圖像,如圖書資料、音像制品等。另一種形式稱為機(jī)器可讀形式的數(shù)據(jù),簡(jiǎn)稱機(jī)讀數(shù)據(jù)。如印刷在物品上的條形碼,錄制在磁帶、磁盤、光盤上的數(shù)碼,穿在紙帶和卡片上的各種孔等,都是通過(guò)特制的輸入設(shè)備將這些信息傳輸給計(jì)算機(jī)處理,它們都屬于機(jī)器可讀數(shù)據(jù)。顯然,機(jī)器可讀數(shù)據(jù)采用了二進(jìn)制數(shù)據(jù)的形式。

2.3.1 數(shù)據(jù)的單位

計(jì)算機(jī)中數(shù)據(jù)的常用存儲(chǔ)單位有位、字節(jié)和字。

1.位(bit)

計(jì)算機(jī)采用二進(jìn)制數(shù),運(yùn)算器運(yùn)算的是二進(jìn)制數(shù),控制器發(fā)出的各種指令也用二進(jìn)制表示,存儲(chǔ)器中存放的數(shù)據(jù)和程序均是二進(jìn)制數(shù),在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)通信時(shí)發(fā)送和接收的還是二進(jìn)制數(shù)。顯然,在計(jì)算機(jī)內(nèi)部到處都是由0和1組成的數(shù)據(jù)流。

計(jì)算機(jī)中最小的數(shù)據(jù)單位是二進(jìn)制的一個(gè)數(shù)位,簡(jiǎn)稱為位(bit或b),也叫比特,是最小的信息單位。計(jì)算機(jī)中最直接、最基本的操作就是對(duì)二進(jìn)制位的操作。

2.字節(jié)(Byte)

字節(jié)簡(jiǎn)寫為B。為了表示人讀數(shù)據(jù)中的所有字符(字母、數(shù)字以及各種專用符號(hào),大約有128~256個(gè)),需要7位或8位二進(jìn)制數(shù)。因此,人們采用8位為1個(gè)字節(jié)。1個(gè)字節(jié)由8個(gè)二進(jìn)制數(shù)位組成。

字節(jié)是計(jì)算機(jī)中用來(lái)表示存儲(chǔ)空間大小的基本容量單位。例如,計(jì)算機(jī)內(nèi)存的存儲(chǔ)容量、磁盤的存儲(chǔ)容量等都是以字節(jié)為單位表示的。除用字節(jié)為單位表示存儲(chǔ)容量外,還可以用千字節(jié)(KB)、兆字節(jié)(MB)以及十億字節(jié)(GB)等表示存儲(chǔ)容量。它們之間存在下列換算關(guān)系:

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讀“太”)

注意:位是計(jì)算機(jī)中最小的數(shù)據(jù)單位,而字節(jié)是計(jì)算機(jī)中的基本信息單位。

2.3.2 常用的數(shù)據(jù)編碼

信息是經(jīng)過(guò)加工的數(shù)據(jù),數(shù)據(jù)要按照規(guī)定的二進(jìn)制形式表示才能被計(jì)算機(jī)處理,這些規(guī)定的形式就是數(shù)據(jù)的編碼。數(shù)據(jù)的類型有很多,數(shù)字和文字是最簡(jiǎn)單的類型,表格、聲音、圖形和圖像則是復(fù)雜的類型。計(jì)算機(jī)不能直接處理英文字母、漢字、圖形或聲音,而是需要對(duì)這些數(shù)據(jù)進(jìn)行編碼,編碼過(guò)程就是實(shí)現(xiàn)將信息在計(jì)算機(jī)中轉(zhuǎn)化為0和1二進(jìn)制串的過(guò)程。編碼時(shí)需要考慮數(shù)據(jù)的特性,還要考慮便于計(jì)算機(jī)的存儲(chǔ)和處理,所以編碼是一項(xiàng)非常重要的工作。下面介紹幾種常用的編碼方法。

1.ASCII編碼

字符是計(jì)算機(jī)中最多的信息形式之一,是人與計(jì)算機(jī)進(jìn)行通信、交互的重要媒介。在計(jì)算機(jī)中,要為每個(gè)字符指定一個(gè)固定的編碼,作為識(shí)別與使用這些字符的依據(jù)。

字符信息包括字母和各種符號(hào),它們必須按規(guī)定的二進(jìn)制碼來(lái)表示,計(jì)算機(jī)才能對(duì)其進(jìn)行處理。字母及數(shù)字字符共62個(gè),包括26個(gè)大寫英文字母、26個(gè)小寫英文字母和0~9這10個(gè)數(shù)字。此外,還有其他類型的符號(hào)(如%、#等),用127個(gè)符號(hào)足以表示字符符號(hào)的范圍。

1字節(jié)(Byte)為8位,最高位總是0,用7位二進(jìn)制數(shù)可表示0000000~1111111范圍中27=128 個(gè)字符。在西文領(lǐng)域的符號(hào)處理普遍采用的是美國(guó)標(biāo)準(zhǔn)信息交換碼(ASCII碼:American Standard Code for Information Interchange),雖然ASCII碼是美國(guó)國(guó)家標(biāo)準(zhǔn),但它已被國(guó)際標(biāo)準(zhǔn)化組織(ISO)認(rèn)定為國(guó)際標(biāo)準(zhǔn)。ASCII碼已得到世界公認(rèn)并在世界范圍內(nèi)通用。

標(biāo)準(zhǔn)的ASCII碼是7位,用1B表示,最高位總是0,可以表示128個(gè)不同符號(hào)。其中前32個(gè)和最后一個(gè)通常是計(jì)算機(jī)系統(tǒng)專用的,代表一個(gè)不可見(jiàn)的控制字符。數(shù)字字符0~9的ASCII碼是連續(xù)的,為30H~39H(H表示是十六進(jìn)制數(shù));大寫字母A~Z和小寫英文字母a~z的ASCII碼也是連續(xù)的,分別為41H~5AH和61H~7AH。因此,在知道一個(gè)字母或數(shù)字的ASCII碼后,很容易推算出其他字母和數(shù)字的ASCII碼。

例如:大寫字母A,其ASCII碼為1000001,即ASC(A)=65;小寫字母a,其ASCII碼為1100001,即ASC(a)=97。可推得ASC(D)=68,ASC(d)=100。

擴(kuò)展的ASCII碼是8位碼,也用1B表示,其前128個(gè)碼與標(biāo)準(zhǔn)的ASCII碼是一樣的,后128個(gè)碼(最高位為1)則有不同的標(biāo)準(zhǔn),并且與漢字的編碼有沖突。為了查閱方便,在表2.3中列出了ASCII碼字符編碼。

表2.3 7位ASCII碼表

例如:大寫字母A,查表得(b7b6b5b4b3b2b1)=1000001。當(dāng)從鍵盤輸入字符‘A’,計(jì)算機(jī)首先在內(nèi)存存入‘A’的ASCII碼(01000001),然后在BIOS(基本輸入/輸出系統(tǒng))中查找與01000001對(duì)應(yīng)的字形(英文字符的字形固化在BIOS中),最后在輸出設(shè)備(如顯示器)輸出‘A’的字形。

注意:1個(gè)字符用1個(gè)字節(jié)表示,其最高位總是0。

2.漢字編碼

要在計(jì)算機(jī)中處理漢字字符,需要解決漢字的輸入/輸出以及漢字的處理等問(wèn)題,較為復(fù)雜。漢字集很大,必須解決如下問(wèn)題:

① 鍵盤上無(wú)漢字,不可能直接與鍵盤對(duì)應(yīng),需要輸入碼來(lái)對(duì)應(yīng)。

② 漢字在計(jì)算機(jī)中的存儲(chǔ)需要機(jī)內(nèi)碼來(lái)表示,以便查找。

③ 漢字量大,字形變化復(fù)雜。需要用對(duì)應(yīng)的字庫(kù)來(lái)存儲(chǔ)。

由于漢字具有特殊性,計(jì)算機(jī)處理漢字信息時(shí),漢字的輸入、存儲(chǔ)、處理及輸出過(guò)程中所使用的漢字代碼不相同,其中有用于漢字輸入的輸入碼,用于機(jī)內(nèi)存儲(chǔ)和處理的機(jī)內(nèi)碼,用于輸出顯示和打印的字模點(diǎn)陣碼(或稱字形碼)。即在漢字處理中需要經(jīng)過(guò)漢字輸入碼、漢字機(jī)內(nèi)碼、漢字字形碼的三碼轉(zhuǎn)換,具體轉(zhuǎn)換過(guò)程如圖2.1所示。

圖2.1 漢字編碼轉(zhuǎn)換過(guò)程

(1)漢字的輸入碼(外碼)。漢字輸入碼是為了利用現(xiàn)有的計(jì)算機(jī)鍵盤,將形態(tài)各異的漢字輸入計(jì)算機(jī)而編制的代碼。目前在我國(guó)推出的漢字輸入編碼方案很多,其表示形式大多是字母、數(shù)字或符號(hào)。編碼方案大致可以分為:以漢字發(fā)音進(jìn)行編碼的音碼,如全拼碼、簡(jiǎn)拼碼、雙拼碼等;按漢字的書寫形式進(jìn)行編碼的形碼,如五筆字型碼;也有音形結(jié)合的編碼,如自然碼。

(2)信息交換用漢字編碼字符集。漢字集要存儲(chǔ)在計(jì)算機(jī)中,需要將經(jīng)常使用的漢字存儲(chǔ)在計(jì)算機(jī)中,《信息交換用漢字編碼字符集·基本集》是我國(guó)于1980年制定的國(guó)家標(biāo)準(zhǔn)GB 2312—80,代號(hào)為國(guó)標(biāo)碼,是國(guó)家規(guī)定的用于漢字信息處理的代碼的國(guó)家標(biāo)準(zhǔn)。

使用多少位來(lái)表示漢字集呢?GB 2312—80 中規(guī)定了信息交換用的6763 個(gè)漢字和682個(gè)非漢字圖形符號(hào)(包括幾種外文字母、數(shù)字和符號(hào))的代碼,即共有7445個(gè)代碼。由于漢字要與西文符號(hào)表示相區(qū)別,在每個(gè)字節(jié)表示中最高位必須為1,只能用后7位表示漢字集,一個(gè)7位二進(jìn)制符號(hào)只能表示27=128個(gè)漢字,而兩個(gè)7位二進(jìn)制符號(hào)能表示214=16384個(gè)漢字,足以表示常用的7445個(gè)漢字,因此一個(gè)漢字應(yīng)當(dāng)用兩個(gè)字節(jié)表示。

漢字的區(qū)位碼:每個(gè)漢字(圖形符號(hào))采用2B表示,每個(gè)字節(jié)只用低7 位。由于低7位中有34種狀態(tài)是用于控制字符的,因此,只有94(128-34=94)種狀態(tài)可用于漢字編碼。這樣,雙字節(jié)的低7位只能表示94×94=8836種狀態(tài)。此標(biāo)準(zhǔn)的漢字編碼表有94行、94列。其行號(hào)稱為區(qū)號(hào),列號(hào)稱為位號(hào)。雙字節(jié)中,用高字節(jié)表示區(qū)號(hào),低字節(jié)表示位號(hào)。非漢字圖形符號(hào)置于第1~11區(qū),國(guó)標(biāo)漢字集中有6763個(gè)漢字,又按其使用頻度、組詞能力以及用途大小分成一級(jí)常用漢字3755個(gè),二級(jí)常用漢字3008個(gè)。一級(jí)漢字置于第16~55區(qū),二級(jí)漢字置于第56~87區(qū)。

(3)漢字的機(jī)內(nèi)碼。漢字的機(jī)內(nèi)碼是供計(jì)算機(jī)系統(tǒng)內(nèi)部進(jìn)行存儲(chǔ)、加工處理、傳輸而統(tǒng)一使用的代碼,又稱為漢字內(nèi)部碼或漢字內(nèi)碼。不同的系統(tǒng)使用的漢字機(jī)內(nèi)碼有可能不同。目前使用最廣泛的是一種為2B的機(jī)內(nèi)碼,俗稱變形的國(guó)標(biāo)碼。這種格式的機(jī)內(nèi)碼是將國(guó)標(biāo)GB 2312—80交換碼的2B的最高位分別置為1而得到的。機(jī)內(nèi)碼的最大優(yōu)點(diǎn)是表示簡(jiǎn)單,且與交換碼之間有明顯的對(duì)應(yīng)關(guān)系,同時(shí)也解決了中西文機(jī)內(nèi)碼存在二義性的問(wèn)題。

下面給出了“西”字由區(qū)位碼到機(jī)內(nèi)碼的轉(zhuǎn)換過(guò)程示例?!拔鳌钡膮^(qū)位碼是46 87,為十進(jìn)制表示。轉(zhuǎn)換為機(jī)器內(nèi)碼的方法為:①每字節(jié)轉(zhuǎn)化為十六進(jìn)制。②每字節(jié)高位置為1。③每字節(jié)加(20)16得機(jī)內(nèi)碼。漢字“西”的機(jī)內(nèi)碼則為(CEF7)16。轉(zhuǎn)換過(guò)程如圖2.2所示。

圖2.2 輸入“西”字時(shí)從區(qū)位碼到機(jī)內(nèi)碼的轉(zhuǎn)換過(guò)程示意圖

(4)漢字的字形碼。漢字的字形碼是漢字字庫(kù)中存儲(chǔ)的漢字字形的數(shù)字化信息,用于漢字的顯示和打印。常用的輸出設(shè)備是顯示器與打印機(jī)。漢字字形庫(kù)可以用點(diǎn)陣和矢量來(lái)表示。目前漢字字形的產(chǎn)生方式大多是以點(diǎn)陣方式形成漢字,因此漢字的字形碼主要是指漢字字形點(diǎn)陣的代碼。

漢字字形點(diǎn)陣有16×16點(diǎn)陣、24×24點(diǎn)陣、32×32點(diǎn)陣、64×64點(diǎn)陣、96×96點(diǎn)陣、128×128點(diǎn)陣、256×256 點(diǎn)陣等。一個(gè)漢字方塊中行數(shù)、列數(shù)分得越多,描繪的漢字也就越細(xì)微,相應(yīng)占用的存儲(chǔ)空間也就越多。漢字字形點(diǎn)陣中每個(gè)點(diǎn)的信息要用一位二進(jìn)制碼來(lái)表示。對(duì)16×16 點(diǎn)陣的字形碼,需要用32B(16×16÷8=32)表示;24×24 點(diǎn)陣的字形碼需要用72B(24×24÷8=72)表示。

漢字字庫(kù)是將漢字字形數(shù)字化后,以二進(jìn)制文件形式存儲(chǔ)在存儲(chǔ)器中而形成的漢字字模庫(kù)。漢字字模庫(kù)亦稱漢字字形庫(kù),簡(jiǎn)稱漢字字庫(kù)。

注意:國(guó)標(biāo)碼用2字節(jié)表示1個(gè)漢字,每個(gè)字節(jié)只用后7位。計(jì)算機(jī)處理漢字時(shí),不能直接使用國(guó)標(biāo)碼,而要將最高位置為1,轉(zhuǎn)換成漢字機(jī)內(nèi)碼,其原因是為了區(qū)別漢字碼和ASCII碼,當(dāng)最高位是0時(shí),表示為字符的ASCII碼,當(dāng)最高位是1時(shí),表示為漢字碼。

2.3.3 計(jì)算機(jī)中數(shù)的表示

在計(jì)算機(jī)中只能用數(shù)字化信息來(lái)表示數(shù)的正負(fù),人們規(guī)定用“0”表示正號(hào),用“1”表示負(fù)號(hào)。例如,在機(jī)器中用8位二進(jìn)制碼表示一個(gè)數(shù)+90,其格式如圖2.3所示。而用8位二進(jìn)制碼表示一個(gè)數(shù)-89,其格式如圖2.4所示。

圖2.3 +90的二進(jìn)制碼

圖2.4 -89的二進(jìn)制碼

在計(jì)算機(jī)內(nèi)部,數(shù)字和符號(hào)都用二進(jìn)制碼表示,兩者合在一起構(gòu)成數(shù)的機(jī)內(nèi)表示形式,稱為機(jī)器數(shù),而它真正表示的數(shù)值稱為這個(gè)機(jī)器數(shù)的真值。

(1)機(jī)器數(shù)表示的數(shù)的范圍受設(shè)備限制。在計(jì)算機(jī)中,一般用若干個(gè)二進(jìn)制位表示一個(gè)數(shù)或一條指令,把它們作為一個(gè)整體來(lái)處理、存儲(chǔ)和傳輸。這種作為一個(gè)整體來(lái)處理的二進(jìn)制位串,稱為計(jì)算機(jī)字。表示數(shù)據(jù)的字稱為數(shù)據(jù)字,表示指令的字稱為指令字。

計(jì)算機(jī)是以字為單位進(jìn)行處理、存儲(chǔ)和傳輸?shù)?,所以運(yùn)算器中的加法器、累加器以及其他一些寄存器,都選擇與字長(zhǎng)相同的位數(shù)。字長(zhǎng)一定,則計(jì)算機(jī)數(shù)據(jù)字所能表示的數(shù)的范圍也就確定了。

例如:使用8位字長(zhǎng)計(jì)算機(jī),它可表示無(wú)符號(hào)整數(shù)的最大值是(255)10=(11111111)2。運(yùn)算時(shí),若數(shù)值超出機(jī)器數(shù)所能表示的范圍,就會(huì)停止運(yùn)算和處理,這種現(xiàn)象稱為溢出。

(2)定點(diǎn)數(shù)。計(jì)算機(jī)中運(yùn)算的數(shù),有整數(shù),也有小數(shù),如何確定小數(shù)點(diǎn)的位置呢?通常有兩種約定:一種是規(guī)定小數(shù)點(diǎn)的位置固定不變,這時(shí)機(jī)器數(shù)稱為定點(diǎn)數(shù);另一種是小數(shù)點(diǎn)的位置可以浮動(dòng),這時(shí)的機(jī)器數(shù)稱為浮點(diǎn)數(shù)。微型機(jī)多選用定點(diǎn)數(shù)。

數(shù)的定點(diǎn)表示是指數(shù)據(jù)字中的小數(shù)點(diǎn)的位置是固定不變的。小數(shù)點(diǎn)位置可以固定在符號(hào)位之后,這時(shí)數(shù)據(jù)字就表示一個(gè)純小數(shù)。假定機(jī)器字長(zhǎng)為16位,符號(hào)占1位,數(shù)值部分占15位,故下面機(jī)器數(shù)其等效的十進(jìn)制數(shù)為-2-15,如圖2.5所示。

如果把小數(shù)點(diǎn)位置固定在數(shù)據(jù)字的最后,這時(shí),數(shù)據(jù)字就表示一個(gè)純整數(shù)。假設(shè)機(jī)器字長(zhǎng)為16位,符號(hào)占1位,數(shù)值部分占15位,故下面機(jī)器數(shù)其等效的十進(jìn)制數(shù)為+32767,如圖2.6所示。

圖2.5 定點(diǎn)小數(shù)

圖2.6 定點(diǎn)整數(shù)

定點(diǎn)表示法所能表示的數(shù)值范圍很有限,為了擴(kuò)大定點(diǎn)數(shù)的表示范圍,可以通過(guò)編程技術(shù),采用多個(gè)字節(jié)來(lái)表示一個(gè)定點(diǎn)數(shù),如采用4B或8B等。

(3)浮點(diǎn)數(shù)。浮點(diǎn)表示法就是小數(shù)點(diǎn)在數(shù)中的位置是浮動(dòng)的。在以數(shù)值計(jì)算為主要任務(wù)的計(jì)算機(jī)中,由于定點(diǎn)表示法所能表示的數(shù)的范圍很有限,不能滿足計(jì)算問(wèn)題的需要,因此就要采用浮點(diǎn)表示法。在同樣字長(zhǎng)的情況下,浮點(diǎn)表示法所表示的數(shù)的范圍就擴(kuò)大了。

計(jì)算機(jī)中的浮點(diǎn)表示法包括兩個(gè)部分:一部分是階碼(表示指數(shù),記做E);另一部分是尾數(shù)(表示有效數(shù)字,記做M)。設(shè)任意一個(gè)數(shù)N在機(jī)器中的表示方法如圖2.7所示,其中2為基數(shù),E為階碼,M為尾數(shù)。

圖2.7 浮點(diǎn)數(shù)表示格式

由尾數(shù)部分隱含的小數(shù)點(diǎn)位置可知,尾數(shù)總是小于1的數(shù)字,它給出該浮點(diǎn)數(shù)的有效數(shù)字。尾數(shù)部分的符號(hào)位確定該浮點(diǎn)數(shù)的正負(fù)。階碼給出的總是整數(shù),它確定小數(shù)點(diǎn)浮動(dòng)的位數(shù),若階符為正,則向右移動(dòng);若階符為負(fù),則向左移動(dòng)。

假設(shè)機(jī)器字長(zhǎng)為32位,階碼為8位,尾數(shù)為24位,則其浮點(diǎn)數(shù)在機(jī)器中的表示方法如圖2.8所示。其中左邊1位表示階碼的符號(hào),符號(hào)位后的7位表示階碼的大小。在后24位中,有1位表示尾數(shù)的符號(hào),其余23位表示尾數(shù)的大小。浮點(diǎn)數(shù)表示法對(duì)尾數(shù)有如下規(guī)定:

1/2M<1

即要求尾數(shù)中第1位數(shù)不為零,這樣的浮點(diǎn)數(shù)稱為規(guī)格化數(shù)。

圖2.8 浮點(diǎn)數(shù)表示示例

當(dāng)浮點(diǎn)數(shù)的尾數(shù)為零或者階碼為最小值時(shí),機(jī)器通常規(guī)定:把該數(shù)看做零,稱為“機(jī)器零”。在浮點(diǎn)數(shù)的表示和運(yùn)算中,當(dāng)一個(gè)數(shù)的階碼大于機(jī)器所能表示的最大碼時(shí),產(chǎn)生“上溢”現(xiàn)象。產(chǎn)生上溢時(shí),機(jī)器一般不再繼續(xù)運(yùn)算而轉(zhuǎn)入“溢出”處理。當(dāng)一個(gè)數(shù)的階碼小于機(jī)器所能代表的最小階碼時(shí)產(chǎn)生“下溢”現(xiàn)象。產(chǎn)生下溢時(shí),一般當(dāng)做機(jī)器零來(lái)處理。

習(xí)題

一、選擇題

1.在計(jì)算機(jī)內(nèi)部,數(shù)據(jù)是以_____形式加工、處理和傳送的。

A.二進(jìn)制數(shù)

B.八進(jìn)制數(shù)

C.十六進(jìn)制數(shù)

D.十進(jìn)制數(shù)

2.二進(jìn)制數(shù)10011010和00101011進(jìn)行邏輯乘運(yùn)算(即“與”運(yùn)算)的結(jié)果是。

A.00001010

B.10111011

C.11000101

D.11111111

3.在計(jì)算機(jī)內(nèi)部,用來(lái)傳送、存儲(chǔ)、加工處理的數(shù)據(jù)或指令都是用_____。

A.區(qū)位碼

B.ASCII碼

C.十進(jìn)制

D.二進(jìn)制

4.將十進(jìn)制數(shù)147轉(zhuǎn)換成2字節(jié)的二進(jìn)制數(shù)是_____。

A.0000000010010011

B.000000001100111

C.10010011

D.1100111

5.與十進(jìn)制數(shù)97等價(jià)的八進(jìn)制數(shù)是。

A.1100001

B.141

C.61

D.111

6.將十進(jìn)制數(shù)107轉(zhuǎn)換成十六進(jìn)制數(shù)是。

A.6B

B.113

C.B5

D.11B

7.將二進(jìn)制數(shù)1110.01轉(zhuǎn)換成十進(jìn)制數(shù)是。

A.16.1

B.32.125

C.14. 25

D.70.02

8.將八進(jìn)制數(shù)1073轉(zhuǎn)換成十進(jìn)制數(shù)是。

A.1028

B.571

C.256

D.512

9.將十六進(jìn)制數(shù)2F8轉(zhuǎn)換成十進(jìn)制數(shù)是。

A.512

B.1024

C.496

D.760

10.將二進(jìn)制數(shù)101111101.0101轉(zhuǎn)換成八進(jìn)制數(shù)是。

A.155.11

B.555.21

C.575.24

D.155.21

11.將二進(jìn)制數(shù)101111101.0101轉(zhuǎn)換成十六進(jìn)制數(shù)是。

A.17C.5

B.555.21

C.575.24

D.17D.5

二、填空題

1.將下列十進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的二進(jìn)制數(shù)。

(84)10=( )2

(57.687)10=( )2

2.將下列二進(jìn)制數(shù)轉(zhuǎn)換成相應(yīng)的十進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)。

(1101101)2=( )10=( )8=( )16

(10101.1011)2=( )10=( )8=( )16

3.計(jì)算機(jī)中的最小數(shù)據(jù)單位是。

4.在計(jì)算機(jī)中,一個(gè)字節(jié)由_____個(gè)二進(jìn)制位組成。一個(gè)西文字符用_____個(gè)字節(jié)表示,一個(gè)漢字用_____個(gè)字節(jié)表示。

5.1MB的存儲(chǔ)空間最多能存儲(chǔ)_____個(gè)漢字。

6.存放16個(gè)16×16點(diǎn)陣的漢字字模,需占存儲(chǔ)空間為_(kāi)____。

7.3位二進(jìn)制可以表示_____種狀態(tài)。

8.32MB等于_____字節(jié)。

9.字符‘A’的ASCII碼為_(kāi)____,'a'的ASCII碼為_(kāi)____。

10.漢字“啊”的區(qū)位碼為_(kāi)____。

三、簡(jiǎn)答題

1.計(jì)算機(jī)為什么要采用二進(jìn)制表示數(shù)據(jù)?

2.計(jì)算機(jī)中常用的信息編碼有哪幾種?請(qǐng)列出它們的名稱。

3.什么是計(jì)算機(jī)外碼和內(nèi)碼?簡(jiǎn)述它們之間的區(qū)別。

4.說(shuō)明浮點(diǎn)數(shù)表示數(shù)據(jù)的原理。

主站蜘蛛池模板: 札达县| 博野县| 海林市| 长治县| 湘阴县| 昭通市| 台北市| 格尔木市| 北宁市| 广元市| 易门县| 柞水县| 卢龙县| 昌图县| 元朗区| 苗栗市| 惠州市| 灵璧县| 托克托县| 华蓥市| 武夷山市| 社会| 襄樊市| 廊坊市| 岳池县| 运城市| 旬阳县| 三门峡市| 乌海市| 汝阳县| 蒲城县| 奉新县| 永胜县| 南开区| 庆元县| 涪陵区| 石阡县| 文登市| 剑河县| 卓尼县| 临城县|