ASCII碼詳解


ASCII簡介

ASCII 碼使用指定的 7 位或 8 位二進制數組合來表示 128 或 256 種可能的字符。標准 ASCII 碼也叫基礎ASCII碼,使用 7 位二進制數來表示所有的大寫和小寫字母,數字 0 到 9、標點符號, 以及在美式英語中使用的特殊控制字符。其中:

  0~31及127(共33個)是控制字符或通信專用字符(其余為可顯示字符),如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BS(退格)、BEL(振鈴)等;通信專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;ASCII值為 8、9、10 和 13 分別轉換為退格、制表、換行和回車字符。它們並沒有特定的圖形顯示,但會依不同的應用程序,而對文本顯示有不同的影響。

  32~126(共95個)是字符(32sp是空格),其中48~57為0到9十個阿拉伯數字;

  65~90為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等。

  同時還要注意,在標准ASCII中,其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。

  后128個稱為擴展ASCII碼,目前許多基於x86的系統都支持使用擴展(或“高”)ASCII。擴展 ASCII 碼允許將每個字符的第 8 位用於確定附加的 128 個特殊符號字符、外來語字母和圖形符號。

ASCII產生

在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,於是美國有關的標准化組織就出台了所謂的ASCII編碼,統一規定了上述常用符號用哪些二進制數來表示。

  美國標准信息交換代碼是由美國國家標准學會(American National Standard Institute , ANSI )制定的,標准的單字節字符編碼方案,用於基於文本的數據。起始於50年代后期,在1967年定案。它最初是美國國家標准,供不同計算機在相互通信時用作共同遵守的西文字符編碼標准,它已被國際標准化組織(International Organization for Standardization, ISO)定為國際標准,稱為ISO 646標准。適用於所有拉丁文字字母。

ASCII國際問題

  ASCII是美國標准,所以它不能良好滿足其它講英語國家的需要。例如英國的英鎊符號(£)在哪里?拉丁語字母表重音符號。使用斯拉夫字母表的希臘語、希伯來語、阿拉伯語和俄語。漢字系統的中國象形漢字,日本和朝鮮。

  1967年,國際標准化組織(ISO:International Standards Organization)推薦一個ASCII的變種,代碼0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“為國家使用保留”,而代碼0x5E、0x60和0x7E標為“當國內要求的特殊字符需要8、9或10個空間位置時,可用於其它圖形符號”。這顯然不是一個最佳的國際解決方案。因為這並不能保證一致性。但這卻顯示了人們如何想盡辦法為不同的語言來編碼的。

ASCII碼的算法

  A在ASCII中定義為01000001,也就是十進制65,有了這個標准后,當我們輸入A時,計算機就可以通過ASCII碼知道輸入的字符的二進制編碼是01000001。而沒有這樣的標准,我們就必須自己想辦法告訴計算機我們輸入了一個A;沒有這樣的標准,我們在別的機器上就需要重新編碼以告訴計算機我們要輸入A。ASCII碼指的不是十進制,是二進制。只是用十進制表示習慣一點罷了,比如在ascii碼中,A的二進制編碼為01000001,如果用十進制表示是65,用十六進制表示就是41H。

  在ASCII碼表中,只包括了一些字符、數字、標點符號的信息表示,這主要是因為計算機是美國發明的,在英文下面,我們使用ASCII表示就足夠了!但是在漢字輸入下面,用ASCII碼就不能表示了,而漢字只是中國的通用表示,所以如果我們要在計算機中輸入漢字,就必須有一個像ascii碼的標准來表示每一個漢字,這就是中國的漢字國標碼,它定義了漢字在計算機中的一個表示標准。通過這個標准,但我們輸入漢字的時候,我們的輸入碼就轉換為區位碼,通過唯一的區位碼得到這個漢字的字形碼並顯示出來。當然漢字的區位碼在計算機中也是用二進制表示的!

漢字編碼

   0-127 是 7位ASCII 碼的范圍,是國際標准。

   至於漢字,不同的字符集用的ascii 碼的范圍也不一樣,常用的漢字字符集有GB2312-80,GBK,Big5,unicode 等。下面我重點說一說最常用的GB_2312 的字符集。

   GB_2312 字符集是目前最常用的漢字編碼標准,windows 95/98/2000 中使用的 GBK字符集 就包含了GB2312,或者說和GB2312 兼容,GB_2312 字符集包含了 6763個的 簡體漢字,和682 個標准中文符號。在這個標准中,每個漢字用2個字節來表示,每個字節的ascii碼為 161-254 (16 進制A1 - FE),第一個字節 對應於 區碼的1-94 區,第二個字節 對應於位碼的1-94 位。

   161-254 其實很好記憶,大家知道英文字符中,可打印的字符范圍為33-126。將 這對 數加上128(或者說最高位置1),就得到漢字使用的字符的范圍。

 

ASCII碼表大致可以分三部分組成:

一:ASCII非打印控制字符

二:ASCII打印字符

三:擴展ASCII打印字符

 

一:ASCII非打印控制字符

ASCII表上的數字0–31分配給了控制字符,用於控制像打印機等一些外圍設備。例如,12代表換頁/新頁功能。此命令指示打印機跳到下一頁的開頭。(參詳ASCII碼表中0-31)

二:ASCII打印字符

數字 32–126 分配給了能在鍵盤上找到的字符,當您查看或打印文檔時就會出現。數字127代表 DELETE 命令。(參詳ASCII碼表中32-127)

 

三:擴展ASCII打印字符

 擴展的ASCII字符滿足了對更多字符的需求。擴展的ASCII包含ASCII中已有的128個字符(數字0–32顯示在下圖中),又增加了128個字符,總共是256個。即使有了這些更多的字符,許多語言還是包含無法壓縮到256個字符中的符號。因此,出現了一些ASCII的變體來囊括地區性字符和符號。例如,許多軟件程序把ASCII表(又稱作ISO8859-1)用於北美、西歐、澳大利亞和非洲的語言。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM