- 計算機與嵌入式系統架構
- 任保全 詹杰 李洪鈞 劉述鋼 劉瓊 賀乾格編著
- 910字
- 2021-04-02 14:05:57
1.4 常用編碼方案
1.4.1 BCD碼
在日常生活中,我們使用十進制數字,二進制編碼十進制(Binary-Coded Decimal,BCD)采用4位二進制碼來表示十進制數中的0~9這10個數碼。BCD碼有很多種形式,如8421碼、余3碼、5421碼和2421碼等,其中,8421碼應用最為廣泛,它與十進制的對應關系見表1-2。
【例1-8】 將345轉換為BCD碼。
根據表1-2,345對應的BCD碼為(001101000101)。
【例1-9】 將BCD碼(010100010010)轉換為十進制數,從右向左每4位分隔開,
并用BCD碼替換對應的十進制數,結果為512。
表1-2 BCD碼與十進制的對應關系

1.4.2 ASCII碼
由于計算機只能識別二進制數字(0或1),因此必須將所有信息(如數字、字母和符號)表示為二進制數。一種常用的字符信息編碼是美國信息交換標準編碼(American Standard Code for Information Interchange,ASCII)。
在ASCII碼中,每個字符都有一個7或8位二進制數組合的表示形式,其中最高有效位用于奇偶校驗位。表1-3為ASCII碼及對應的十六進制值。十六進制00~1F以及7F對應的字符是控制字符,為不可打印字符,如NUL、SOH、STX、ETX、ESC、DLE等。
表1-3 ASCII碼及對應的十六進制值


【例1-10】 將單詞“Network”轉換為二進制,并以十六進制顯示結果。
通過使用表1-3,每個字符由7位二進制數組合表示,結果如下。

以十六進制顯示結果為

1.4.3 Unicode
Unicode是一種新的編碼標準,共有3種具體實現方式,分別為UTF-8、UTF-16和UTF-32。其中,UTF-8占用1~4個字節,UTF-16占用2或4個字節,UTF-32占用4個字節。用于表示大多數語言(如希臘語、阿拉伯語、中文和日語)中的字符和數字。ASCII碼使用7或8位二進制數組合表示拉丁語中的每個字符,一共可表示256個字符,但不支持數學符號和科學符號。Unicode使用16位二進制數組合時,可以表示65 536個字符或符號。Unicode中的字符由16位二進制數組合表示,相當于十六進制的4位數字。例如,Unicode中的字符B用十六進制表示是U0042(U表示Unicode)。ASCII碼在(00)16到(7F)16之間表示。為了將ASCII碼轉換為Unicode,在ASCII碼的左側添加兩個0,因此,表示ASCII字符的Unicode在(0000)16到(007F)16之間。
1.4.4 非ASCII碼
英語用128個符號編碼就夠了,但是表示其他語言時,128個符號是不夠的。我國于1980年制定了GB1988—80《信息處理交換用七位編碼字符集》,除了用人民幣符號¥代替美元符號$外,其余代碼與ASCII碼相同。當然,除了國家標準GB1988—80,我國還制定了GB2312《信息交換用漢字編碼字符集 基本集》,使用兩個字節表示一個漢字,所以理論上最多可以表示65 536個符號。