第3章 新媒體的技術元素
新媒體以現代通信與計算機技術為支撐,它的不斷發展也越來越依賴于這些技術的進步,使得這些技術越來越成為新媒體不可分割的基本元素。
3.1 信息編碼基礎
數據是記錄信息的符號。用電子數字計算機進行信息處理,就是對符號形式的數據進行存儲與處理。電子數字計算機以開關元件為基礎。開關元件是具有兩種穩定狀態的電子元件,因此要用電子數字計算機進行處理的數據必須表示為用代表其電子開關兩種狀態的0和1表示的符號。將其他形式的數據符號轉換為0、1表示的符號的過程,稱為0、1編碼。
3.1.1 數值數據的0、1編碼
1. 二進制的基本概念
人們最習慣的計數方法是使用十進制。十進制具有如下3個特點。
(1)用0、1、2、3、4、5、6、7、8、9十個符號表示數。
(2)“逢十進一”,即在某一位上,當夠10時,就要向左邊的位進一。因為每個位上最大值只能是9。
(3)十進制數從小數點往左,依次為十位、百位、千位、萬位……從小數點向右,依次為十分位、百分位、千分位、萬分位……即一個數字m,在位置i上時,其值為m×10i。10i稱為i位權。例如,個位的位權為100,十位的位權為101,百位的位權為102…
相對于十進制,二進制具有如下特點。
(1)只能用兩個符號表示數。在中國的八卦中,這兩個符號用“—”和“--”表示;在數字電路中,這兩個符號可以用高電位和低電位、有脈沖和無脈沖、開和關等表示。這里,統一用0和1表示。
(2)“逢二進一”,即在某一位上,當夠2時,就要向左邊的位進一。因為每個位上的最大值只能是1。
(3)十進制數從小數點往左,各位的位權依次為20、21、22…,即1、2、4、8、16、32、64、128、256、512、1024、2048等;小數點往右各位的位權依次為2-1、2-2…,即0.5、0.25、0.125、0.0625、0.03125等。
2. 十進制數與二進制數之間的轉換
表3.1為幾個十進制數與二進制數之間的對應關系。
表3.1 幾個十進制數與二進制數之間的對應關系
十進制數
0
1
2
3
4
5
6
7
8
9
10
16
32
二進制數
0
1
10
11
100
101
110
111
1000
1001
1010
10000
100000
下面介紹一般數的轉換方法。
1)二—十(B→D)進制轉換
規則:將1所在的位上的位權值相加。
例3.1 101.11101B= ?D。
解:
位 權:22 21 20 2-1 2-2 2-3 2-4 2-5
二進制數:1 0 1 . 1 1 1 0 1
計 算:4 + 0 + 1 + 0.5+0.25+0.125 +0 + 0.03125 = 5.90625D
2)整數十—二轉換
規則:從足夠的位權值開始,連續減去各個位權值:夠則減該位取1,不夠則不減該位取0;直到減完最后一個位權值1。
例3.2 158D=?B。
解:考慮158在128與256之間,則先減128,該位取1,差為30;減64,不足,該位取0;再減32,不足,取0;再減16,夠減,取1,差為14;減8。夠減取1,差為6;減4,夠取1,差為2;減2,夠取1,差為0;減1,不夠取0,結束。
上述過程如圖3.1所示。
圖3.1 將158轉換為二進制數
3)小數十—二進制轉換
規則:從小數點開始,連續減各小數位的位權值,夠則減該位取1,不夠則不減該位取0,直到減為0或到要求的位數。
例3.3 0.24D= ?B,到小數點后4位。
解:計算過程如圖3.2所示。
圖3.2 將0.24轉換為二進制數
注意:第一個0與小數點要照寫。
有時,小數十—二進制轉換,會出現轉換不完的情況。這時可按“舍0取1”(相當于四舍五入)的原則,取到所需的位數。
3. 十六進制編碼
二進制數書寫太長,難認、難記。為了給程序員提供速記形式,使用中常用十六進制(Hexadecimal)作為二進制的助記符。
十六進制記數符為0、1、2、3、4、5、6、7、8、9、A(a)、B(b)、C(c)、D(d)、E(e)、F(f)。
將二進制數由小數點起,向兩側分別以每4位劃一組(最高位與最低位不足4位以0補),每一組便為一個十六進制數。
例3.4 10110 1110.1111B=?H。
解:
0001 0110 1110 . 1111
補零
1 6 E F
所以 10110 1110.1111B=16E.FH。
4. 符號的0、1編碼
在計算機中不僅要用0、1編碼的形式表示一個數的數值部分,而且正、負號也要用0、1編碼來表示。一般用數的最高有效位(最左邊一位)(Most Significant Bit,MSB)表示數的正負,通常
MSB=0 表示正數,如+1011表示為01011;
MSB=1 表示負數,如-1011表示為11011。
一個數在機器內的表示形式稱為機器數。它把一個數連同它的符號在機器中用0和1進行編碼,這個數本身的值稱為該機器數的真值。上邊的01011和11011就是兩個機器數,它們的真值分別為+1011和-1011。
當然,不考慮數的正、負時,不需要用1位來表示符號。這種沒有符號位的數,稱為無符號數。由于符號位要占用1位,所以用同樣字長,無符號數的最大值比有符號數要大一倍。如字長為4位時,能表示的無符號數的最大值為1111,即15,而表示的有符號數的最大值為111,即7。
5. 實數的0、1編碼
在數學中實數用來測量連續的量,在理論上小數點的右邊是一個無窮的數列(可以是循環的,也可以是非循環的)。在實際應用中被近似為一個有限小數。在計算機中,比起整數的0、1編碼來,帶小數的數的0、1編碼,還要考慮處理的效率問題,因而也就復雜一些。通常,一個實數可以近似表示成指數形式。例如,一個十進制數可以表示為
N1=3.14159=0.314159×101=0.0314159×102
同樣,一個二進制數可以表示為
N2=0.011B=0.110B×2-1=0.0011B×21
一般地說,一個任意二進制數N可以表示為
N=2E×M
式中:
E為數N的階碼;M為數N的有效數字,稱為尾數。為了用二進制表示這樣形式的實數,可以把一個字長分為如圖3.3所示的4部分。其中,Ef、S分別稱為階碼E和尾數M的符號位,它們一般占1b。使用這種格式的關鍵是規定好總的字長和每部分的長度。
圖3.3 浮點數的機內表示
例如,用4B字長,階碼E占4b,-1011.01101可以表示為圖3.4所示的樣子。其中的尾數M部分為純小數0.1011 0110 1000 0000 0000 0000。
圖3.4 一個浮點數的實例
3.1.2 西文字符的0、1編碼
1.ASCII字符集
西文字符中最基本、應用最多的字符有以下一些。
(1)26個小寫拉丁字母。
(2)26個大寫拉丁字母。
(3)約25個特殊字符,如[、+、-、@、|、# 等。
(4)10個數字碼:0、1、2、3、4、5、6、7、8、9。
共計87個字符。由于位于64~128之間,所以需要7b的長度,再用最高位b7作為奇偶校驗位,正好是一個字節。
1967年美國國家標準學會(American National Standards Institute,ANSI)提出一套編碼方案作為數據傳輸的標準碼,稱為美國信息交換標準碼(America Standard Code for Information Interchange,ASCII)。ASCII后來被國際標準化組織(International Organization for Standardization, ISO)接納,批準作為國際標準ISO646。1981年我國參照ASCII碼頒布了國家標準《信息處理交換用七單位字符編碼》,與ASCII碼基本相同。ASCII是一個如 表3.2所示的7b組成的字符集。
表3.2 ASCII碼(7位碼)字符表
在碼表中查找一個字符所對應的ASCII碼的方法是:向上找b6b5b4,向左找b3b2b1b0。例如,字母J的ASCII碼中的b6b5b4為100B(4H),b3b2b1b0為1010B(AH)。因此,J 的ASCII碼為1001010B(4AH)。
字母和數字的ASCII碼的記憶是非常簡單的:只要記住了一個字母或數字的ASCII碼(例如,記住A為十進制的65,0的ASCII碼為十進制的48),知道相應的大小寫字母之間差32,就可以推算出其余字母、數字的ASCII碼。
由于標準ASCII字符集字符數目有限,在實際應用中往往無法滿足要求。為此,國際標準化組織又制定了ISO 2022標準,在保持與ISO 646兼容的前提下,將ASCII字符集擴充為8b的統一方法。多出的128個0、1編碼稱為擴展ASCII碼(Extended ASCII),以適用于不同國家和地區使用。這樣,就形成兩個ASCII字符集:基本ASCII碼(最高位為0)和擴展ASCII碼(最高位為1)。
2.Unicode字符集
擴展ASCII碼字符集最多可以提供256個字符,雖然足夠表示英語,但也僅局限于英語的表示,對于世界大多數文字,還是無能為力。為此,國際標準組織ISO于1984年4月成立ISO/IEC JTC1/SC2/WG2工作組,針對各國文字、符號進行統一編碼。Unicode (Universal Multiple Octet Coded Character Set)于1992年6月通過DIS(Draf International Standard)。Unicode字符集采用16b表示字符,能夠表示的字符數為65?534個,其中包含符號6811個、漢字20?902個、韓文拼音11?172個、造字區6400個,保留20?249個。
為了與ASCII兼容,Unicode設計成ASCII的超集,即Unicode字符集中的前256個字符的編碼與擴展ASCII字符集完全一樣。
3. 字符的輸出
西文是拼音文字,計算機的鍵盤就是按照這一特點設計的。在采用ASCII的系統中,從鍵盤上輸入一個字符,在計算機內部存儲的是一個ASCII碼值——機內碼(在機器內部存儲字符的碼)。但是,如何再將這個字符輸出呢?并且如何由一個ASCII碼得到某種字體的該字符呢?
實際上,不同字體的字符都是一個圖形。存儲這個圖形的方法是在一個柵格中用方塊組成的點陣畫出一個字符的圖形——稱為字模。圖?3.5?為字符 A的字模。它是一個8×8的點陣。字模的點陣數越多,字形就越好看,但占用的存儲空間越大。如一個8×8點陣字模占用的存儲空間8B,一個16×16點陣字模占用的存儲空間32B。一般的點陣類型有16×16、24×24、32×32、48×48等。除了點陣組成的字模外,還可以采用矢量或曲線畫出的字模。
一種字體的所有字符的字模,構成一個字模庫。要進行輸出某種字體的一個字符,就須驅動該字模庫中需要調用的字模的存儲地址(或者干脆把某字符對應的ASCII碼值當作字庫的地址),然后控制打印機的針頭或顯示器的像素(發光點),打印或顯示出要求字體的要求字符。
3.1.3 漢字的0、1編碼
1. 幾種常用的漢字機內編碼方案
漢字是世界上符號最多的文字,歷史上流傳下來的漢字總數有七八萬之多。為了解決漢字的編碼問題,人們推出了多種漢字編碼方案。下面介紹常用的幾種常用的漢字編碼方案。
1)GB 2312—1980和GB 2312—1990
GB 2312—1980是1980年發布的中文信息處理的中國國家標準,全稱是GB 2312—1980《信息交換用漢字編碼字符集 基本集》,共收錄6763個簡體漢字、682個符號,其中漢字分為兩級:一級字3755,以拼音排序;二級字3008,以偏旁排序。
GB 2312—1980為基本漢字編碼,在中國大陸及海外使用簡體中文的地區(如新加坡等)是強制使用的唯一中文編碼。1990年又制定了繁體字的編碼標準GB 12345—1990《信息交換用漢字編碼字符集 第一輔助集》,目的在于規范必須使用繁體字的各種場合,以及古籍整理等。該標準共收錄6866個漢字(比GB 2312多103個字,純繁體的字大概有2200余個。
GB 2312—1980和GB 2312—1980都是采用雙字節編碼。為了與系統中基本的ASCII字符集區分開,所有漢字編碼的每個字節的第一位都是1。例如,“啊”字的編碼為0xB0A1。
2)Big5編碼
Big5編碼是目前中國臺灣、香港地區普遍使用的一種繁體漢字的編碼標準,包括440個符號,一級漢字5401個、二級漢字7652個,共計13?053個漢字。Big 5 是一個雙字節編碼方案,其第一字節的值在十六進制的 A0~FE 之間,第二字節在 40~7E 和 A1~FE 之間。因此,第一字節的最高位是 1,第二字節的最高位則可能是 1,也可能是 0。
3)GBK編碼
GBK全稱“漢字內碼擴展規范”(俗稱大字符集),是中國大陸地區制定的。GBK工作小組于1995年12月完成GBK規范。該編碼標準兼容GB?2312,共收錄漢字21?003個、符號883個,并提供1894個造字碼位,簡、繁體字融于一庫。
4)Unicode編碼
如前所述,Unicode字符集包含漢字20?902個。
5)GB 18030—2000
2000年3月,信息產業部和質量技術監督局在北京聯合發布了《信息技術和信息交換用漢字編碼字符集、基本集的擴充》,國家標準號為GB?18030—2000,收錄了27?484個漢字,還收錄了藏、蒙、維等主要少數民族的文字,總編碼空間超過150萬個碼位,為解決人名、地名用字問題提供了方案,為漢字研究、古籍整理等領域提供了統一的信息平臺基礎。該標準于2000年12月31日強制執行。 GB 18030—2000 作為 GBK for Unicode 3.0 的更新而誕生,并且 作為GB 2312—1980《信息交換用漢字編碼字符集基本集》的擴展,向下兼容 GBK 和 GB?2312—1980 標準。
GB 18030是1-2-4字節變長編碼。
單字節,其值從0到0x7F。
雙字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x40到0xFE(不包括0x7F)。
四字節,第一個字節的值從0x81到0xFE,第二個字節的值從0x30到0x39,第三個字節的值從0x81到0xFE,第四個字節的值從0x30到0x39。
這幾種編碼都是機內碼。
2. 漢字的輸入——漢字外碼
現在使用的計算機鍵盤是根據英文設計的,而漢字形狀復雜,沒有確切的讀音信息,且一字多音、一音多字,要像輸入西文字符那樣在現有鍵盤上利用機內碼進行輸入非常困難。為此,不得不設計專門用來進行輸入的漢字編碼——漢字外碼。常見的輸入法有以下幾類。
(1)按漢字的排列順序形成的編碼(流水碼),如區位碼。
(2)按漢字的讀音形成的編碼(音碼),如全拼、簡拼、雙拼等。
(3)按漢字的字形形成的編碼(形碼),如五筆字型、鄭碼等。
(4)按漢字的音、形結合形成的編碼(音形碼),如自然碼、智能ABC。
輸入碼在計算機中必須轉換成機內碼,才能進行存儲和處理。
3. 漢字的字模
漢字字模的原理與西文字符的字模基本相同,只是由于漢字筆畫復雜,為了表達清晰,要比西文字符需要更多的點陣。圖3.6為一個24×24點陣的漢字字模 示例。
4. 漢字系統的工作過程
圖3.7描畫了一個計算機上從漢字的輸入到輸出(顯示)的過程。
……