計算機中數字、文字、圖像、聲音和視頻的表示與編碼

設計計算機的最初目的是進行數值計算,計算機中首先表示的數據就是各種數字信息。隨著應用的發展,現在計算機數據以不同的形式出現,如:數字、文字、圖像、聲音和視頻等。但是,在計算機內部,這些數據形式還是以數字的形式存儲和處理的。

通過使用數字對各式各樣的信息按照一定的規則進行編輯,最終變換為計算機易於識別的信息,這個過程稱為數字化編碼。用少量最簡單的基本符號,對大量複雜多樣的信息進行一定規律的組合。

編碼的兩大基本要素:

基本符號的種類(例如二進制的“0”和“1”)

組合規則

現代計算機內部採用二進制符號進行信息編碼。

1 計算機中數據的表示方法

任何一個二進制數N都可以表示為

N=S·2^E

其中E是一個二進制整數,稱為數N的階碼,2為階碼的基數,S是二進制小數,稱為數N的尾數。E和S可正可負。尾數S表示數N的全部有效數據,階碼E指明該數的小數點位置,表示數據的大小範圍。

2 整數的表示

整數是沒有小數部分的整型數字。

例如:123、4、-56、0等都是整數,而1.34則不是整數。

計算機中整數的分類:

無符號整數:不區分正負的正整數。

有符號整數:最高位表示正負的整數。

2.1 整數的原碼、反碼和補碼

2.1.1 整數的原碼

所謂原碼是用一個數的最高位存放符號(0為正,1為負),後續的其他位與數的真值相同的數據表示方法。

2.1.2 整數的反碼

用最高位存放符號,並將原碼的其餘各位逐位取反。反碼的取值空間和原碼相同且一一對應。

2.1.3 整數的補碼

在補碼錶示法中,正數的補碼錶示與原碼相同,即最高符號位用0表示正,其餘位為數值位。而負數的補碼則為它的反碼、並在最低有效位加1所形成。

我們在使用程序設計語言設計程序中使用的是數據的原碼,而數據在計算機中是以補碼的形式存在的。

2.1.4 三種編碼的比較

a 三種編碼(原碼、反碼、補碼)的最高位都是符號位。

b 當真值為正時,三種編碼的符號位都用0表示,數值部分與真值相同。即它們的表示方法是相同的。

c 當真值為負時,三種編碼的符號位都用1表示,但數值部分的表示各不相同,數值部分存在這樣的關係:補碼是原碼的“求反加1”(整數),或者“求反末位加1”(小數);反碼是原碼的“每位求反”。

c 它們所能表示的數據範圍基本一樣。

區別:在於對負數的表示方法有所不同。

2.2 整數算術運算的方法

以補碼的形式進行運算。

3 實數的表示

實數是帶有整數部分和小數部分的數字。

例如:1.23、3.4、0.56等都是實數。

實數小數點位置不固定,所以稱浮點數。它是既有整數又有小數的數,純小數可以看作實數的特例。

在計算機中採用浮點表示法(通常採用IEEE754標準)來表示實數。

3.1 實數的格式

為了使表示法的固定部分統一,科學計數法(用於十進制)和浮點表示法(用於二進制)都在小數點左邊使用了唯一的非零數碼。這稱為規範化。

計算機表示實數時,只存儲實數的三部分信息:符號,指數,和尾數(小數點右邊的位)。小數點和定點部分左邊的位1並沒有存儲——他們是隱含的。

例如,一個實數1000111.0101規範化後變成為:2^6×1.0001110101,

在計算機中表示為:

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

符號——一個數的符號可以用一個二進制位來存儲(0或者1)。

指數——指數(2的冪)定義為小數點移動的位數。其可以為正也可以為負。餘碼表示法(後面討論)是用來存儲指數位的方法。

尾數——尾數是指小數點右邊的二進制數。它定義了該數的精度。尾數是作為無符號整數存儲的。

為了讓正的和負的整數都可以作為無符號數存儲,計算機通常採用餘碼系統。在餘碼系統中,使用一個正整數(稱為一個偏移量)加到每個數字中,用於把他們同一移到非負的一邊。這個偏移量的值是2^(m-1)-1,m是內存單元存儲指數的大小。

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

如32位計算機的偏移量:2^(m-1)-1=2^(8-1)-1=127

3.2 實數的算術運算

實數(浮點數)也可以進行包括加減乘除在內的算術運算。我們只介紹加法和減法,因為乘法和除法是加法和減法的多次重複運算。

浮點數加減法是同一個處理過程。步驟如下:

a 檢驗符號,如果符號相同,相加其值,結果符號與他們相同。如果符號不同,比較絕對值,絕對值大的減去小的,結果符號取絕對值大的一方。

b 移動小數點,使兩者階數相同。也就是說,當階數不同時,數值小的一方將小數點左移,但要使值不變。

c 將變換後的數值進行加減運算(包括整數和小數部分)。

4 字符編碼

隨著現代計算機運用的深入,計算機不僅僅進行科學計算,實際上更大量的工作是用於處理人們日常工作和生活中最常使用的信息形式,也就是所謂的非數值型數據,包括語言文字、邏輯語言、視頻圖像等非數值信息。這需要為計算機找到一種合適的方法來表達這些信息。

計算機中使用了不同的編碼來表示和存儲數字、文字符號、聲音、圖片和圖像(視頻)信息。

編碼(或代碼)通常指一種在人和機器之間進行信息轉換的系統(體系)。編碼是人們在實踐中逐步創造的一種用較少的符號來表達較複雜信息的表示方法。

4.1 ASCII碼

字符是非數值型數據的基礎,字符與字符串數據是計算機中用得最多的非數值型數據。在使用計算機的過程中,人們需要利用字符與字符串編寫程序、表示文字及各類信息,以便與計算機進行交流。為了使計算機硬件能夠識別和處理字符,必須對字符按一定規則用二進制進行編碼,使得系統裡的每一個字母有唯一的編碼;文本中還存在數字和標點符號,所以也必須有它們的編碼。

1)ASCII碼是使用最多和最普遍的字符編碼,即美國信息交換標準代碼(American standard code for Information Interchange)。

2)ASCII碼有7位碼和8位碼兩種形式 。

3)7位ASCII碼:用七位二進制數進行編碼的,可以表示128個字符,最高位恆為0。

4)8位ASCII碼:用8位二進制數進行編碼,可以表示256種字符;當最高位恆為0,與7位ASCII碼相同,稱為基本ASCII碼;當最高位為1時,形成擴充ASCII碼,各國一般把該碼作為本國語言的字符代碼。

5)鍵盤輸入的數碼0~9、52個大、小寫英文字母A ~Z、a ~z、32個標點符號、運算符號、專用符號和34個控制符,採用7位ASCII碼編碼。

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

4.2 漢字編碼

漢字也是字符,與西文字符比較,漢字數量大,字形複雜,同音字多,這就給漢字在計算機內部的存儲、傳輸、交換、輸入、輸出等帶來了一系列的問題。為了能直接使用西文標準鍵盤輸入漢字,還必須為漢字設計相應的輸入編碼,以適應計算機處理漢字的需要。

漢字信息所涉及的編碼:

4.2.1 漢字輸入編碼

漢字輸入通常有鍵盤輸入、語音輸入、手寫輸入等方法,都有一定的優缺點。鍵盤輸入方式:將每個漢字用一個或幾個英文鍵表示,這種表示方法稱為漢字的“輸入編碼”。

漢字輸入編碼的種類:

數字編碼:如電報碼、區位碼等。特點:難於記憶,不易推廣;

字音編碼:如拼音碼等。特點:簡單易學,但重碼多;

字形編碼:如五筆字型、表形碼等。特點:重碼少,輸入快,但不易掌握;

音形編碼:如自然碼、快速碼等。特點:規則簡單,重碼少,但不易掌握

4.2.2 國際碼和區位碼

1980年我國頒佈了《信息交換用漢字編碼字符集基本集》代號為GB2312-80,是國家規定的用於漢字信息處理使用的代碼依據,這種編碼稱為國標碼。在國標碼的字符集中共收錄了6763個常用漢字和682個非漢字字符(圖形、符號),其中一級漢字3755個,以漢語拼音為序排列,二級漢字3008個,以偏旁部首進行排列。

所有漢字字符用2個字節表示,高字節共分為94個區(01-94區),低字節分為94個位( 01 -94位), 漢字所在的區號和位號共同組合成該漢字的區位碼,區位碼為十進制。

非漢字圖形字符排在01----15區;

一級漢字排在16---55區;

二級漢字排在56---87區;

例:“中” 區號54、位號48 ,區位碼為5448

“國” 區號25、位號90,區位碼為2590

國標碼的轉換:將漢字的區位碼錶示成16進制,在加上2020H。

即:國標碼=(區、位碼)16+2020H

4.2.3 機內碼

漢字的機內碼是計算機系統內部對漢字進行存儲、處理、傳輸統一使用的代碼,又稱為漢字內碼。漢字內碼是與ASCII對應的,用二進制對漢字進行的編碼。

一般用2個字節來存放漢字的內碼,即雙字節字符集(double-byte character set,簡稱DBCS)

4.2.4 矢量、點陣輸出輸出碼

矢量方式存儲的是描述字體的輪廓信息。

點陣是對漢字字形經過點陣數字化後的一串二進制數,又稱為漢字字形碼或字模。

一般顯示用16×16點陣,打印用24×24、32×32、48×48等點陣。

點陣越多,打印的字體越好看,但佔用的存儲空間也越大.

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

4.2.5 漢字的整個處理過程

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

4.3 Unicode碼

雖然ASCII碼在字符編碼領域佔據主要地位,但是現在其他更具擴展性的代碼也越來越普及,這些代碼能夠表示各種語言的文檔資料。其中之一是Unicode,它是由硬件及軟件的多家主導廠商共同研製開發的,並很快得到計算界的支持。

Unicode碼採用唯一的16位模式來表示每一個符號。因此,Unicode由65536個不同的位模式組成——足以表示用中文、日文和希伯來文等語言書寫的文檔資料,則是Unicode對比ASCII碼最大的優勢。

Unicode即統一碼,又稱萬國碼,是一種以滿足跨語言、跨平臺進行文本轉換、處理的要求為目的設計的計算機上字符編碼。它為每種語言中的每個字符設定了統一併且唯一的二進制編碼。Unicode的編碼方式與ISO10646的通用字元集(亦稱通用字符集)概念相對應,使用16位的編碼空間。也就是每個字符佔用2個字節。

對於中文而言,Unicode16編碼裡面已經包含了GB18030裡面的所有漢字(27484個字)

Unicode擴展自ASCII字元集。其使用16位元編碼,並可擴展到32位,這使得Unicode能夠表示世界上所有的書寫語言中可能用於電腦通訊的字元、象形文字和其他符號,這使其有可能成為ASCII的替代者。

UTF-8 就是在互聯網上使用最廣的一種 Unicode 的實現方式。其他實現方式還包括 UTF-16(字符用兩個字節或四個字節表示)和 UTF-32(字符用四個字節表示),不過在互聯網上基本不用。重複一遍,這裡的關係是,UTF-8 是 Unicode 的實現方式之一。

UTF-8 最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。

UTF-8 的編碼規則很簡單,只有二條:

1)對於單字節的符號,字節的第一位設為0,後面7位為這個符號的 Unicode 碼。因此對於英語字母,UTF-8 編碼和 ASCII 碼是相同的。

2)對於n字節的符號(n > 1),第一個字節的前n位都設為1,第n + 1位設為0,後面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的 Unicode 碼。

5 靜態圖像編碼

靜態圖像是與動態圖像相對應的概念,專門指單幅的圖形。是計算機大量使用的一種主要信息形式。

計算機表示靜態圖像的兩種方式:

位圖圖像

矢量圖

由於靜態圖像數據包含的信息量大、且其信息具有一定的規律,因此一般不採用直接編碼的方式對其進行編碼,而是經常採用一些壓縮算法來表示圖像信息。

5.1 位圖圖像

位圖表示圖象的方法中,圖像被分成像素矩陣,也稱點陣,每個像素是一個小點。像素的大小取決於分辨率。

把圖像分成像素之後,每一個像素被賦值為一個位模式。模式的尺寸和值取決於圖像。

例如:對於一個僅有黑白點組成的圖像(例如棋盤),一個1位模式已足夠表示一個像素。0模式表示黑像素,1模式表示白像素。如果採用8位,才可以表示256種顏色信息。

位圖文件的基本編碼格式為BMP(bitmap的縮寫)文件。BMP是一種與硬件設備無關的圖像文件格式。

標籤圖像文件(TaggedImageFileFormat,簡寫為TIFF)格式是圖像專業領域使用較廣泛的一種編碼形式,主要用來存儲照片和藝術圖等對圖像質量要求較高的平面圖像。它也是位圖文件格式的一種。

位圖圖象文件的方法中,體積太大,對計算機的存儲和傳輸都產生很大壓力。

靜態圖像文件信息具有一定的規律,在保證其基本信息正確的前提下,可以適當通過一定的算法縮小圖像文件的大小。

為了存儲和傳輸數據,在保留原有內容的條件下,縮小所涉及數據的大小是有益的(有時也是必須的)。這個技術稱為數據壓縮。數據壓縮方案有兩類。一類是無損壓縮,一類是有損壓縮。

無損壓縮:指壓縮後信息表達的質量沒有下降,只是文件大小減小。

有損壓縮:指在影響信息表達質量的前提下,為加大壓縮效率,儘可能減小文件的大小。

5.2 矢量圖

位圖圖像表示法存在的問題是,一幅特定的圖像採用精確位模式表示後,必須存儲在計算機中。隨後,如果想重新調整圖像的大小,就必須改變像素的大小,這將屏幕抖動情況。

矢量圖表示方法並不存儲位模式,它是將圖像分解成一些曲線和直線的組合,其中每一曲線或直線由數學公式表示

當圖像要顯示或打印時,將圖像的尺寸作為輸入傳給系統。系統重新設計圖像的大小並用相同的公式畫出圖像。

每次調整矢量圖時,計算機將繪圖公式重新估算一次,並根據新公式畫出圖像,由於重新估算公式地計算量遠小於調整像素,因此可以有效避免屏幕抖動現象。

6 動態數據的編碼

隨著計算機使用的深入,其所涉及的信息種類也越來越廣泛,不僅包含靜態信息,也大量使用諸如聲音、動畫、影像等動態信息。

計算機中動態信息按表達形式可以歸納為兩類:

音頻信息

視頻信息

6.2 音頻信息的編碼

音頻編碼方式也有非壓縮編碼和壓縮編碼兩類,壓縮編碼又分為有損壓縮和無損壓縮兩種。基本的音頻編碼是PCM(PulseCodeModulation,脈衝編碼調製)方式

PCM的優缺點:

優點:處理後的音頻信息音質較好

缺點:文件體積較大

MP3(MPEGAudioLayer-3)是目前最為普及的音頻壓縮編碼格式,是MPEG1的衍生編碼方案。MP3可以做到12:1的壓縮比並保持音質基本可接受

6.2 視頻信息的編碼

視頻是單幅圖像在時間上的連續表示,是典型的動態數據類型。

動態視頻的基礎是前面討論過的靜態單幅圖像,在這裡稱為幀。動態視頻壓縮的基礎理論就是在單幅圖像壓縮的基礎上,再結合幀與幀之間的相關性,進行進一步壓縮。

最有影響的視頻編碼技術是MPEG(MovingPicturesExpertsGroup,動態圖像專家組),它屬於國際標準化組織(ISO/IEC)。MPEG標準主要有MPEG-1、MPEG-2、MPEG-4、MPEG-7及MPEG-21等五個。

MPEG標準的視頻壓縮編碼技術主要利用了具有運動補償的幀間壓縮編碼技術以減小時間冗餘度,利用DCT技術以減小圖像的空間冗餘度,利用熵編碼則在信息表示方面減小了統計冗餘度

7 計算機中數字、文字、圖像、聲音和視頻的表示與編碼

計算機中數字、文字、圖像、聲音和視頻的表示與編碼

-End-


分享到:


相關文章: