1、爲何須要對字符進行編碼算法
1.編碼
計算機一開始發明出來時是用來解決數字計算問題的,後來人們發現,計算機還能夠作更多的事,例如文本處理。spa
但計算機其實挺笨的,它只「認識」010110111000…這樣由0和1兩個數字組成的二進制數字,這是由於計算機的底層硬件實現就是用電路的開和閉兩種狀態來表示0和1兩個數字的。所以,計算機只能夠直接存儲和處理二進制數字。操作系統
2.設計
爲了在計算機上也能表示、存儲和處理像文字、符號等等之類的字符,就必須將這些字符轉換成二進制數字。code
固然,確定不是咱們想怎麼轉換就怎麼轉換,不然就會形成同一段二進制數字在不一樣計算機上顯示出來的字符不同的狀況,所以必須得定一個統一的、標準的轉換規則。orm
2、EBCDIC碼與ASCII碼blog
1.ci
因而最開始出現了EBCDIC(Extended Binary Coded Decimal Interchange Code擴展二進制編碼的十進制交換碼)編碼標準。EBCDIC碼是由國際商用機器公司(IBM)爲大型機操做系統而開發設計的,於1964年推出。開發
在EBCDIC碼中,英文字母不是連續排列的,中間出現屢次斷續,這帶來了一些困擾和麻煩。
所以,在後來IBM的我的計算機和工做站操做系統中並無採用EBCDIC碼,而是採用了晚於EBCDIC碼推出、且後來成爲了英文字符編碼工業標準的ASCII編碼方案。
2.
ASCII碼(American Standard Code for Information Interchange美國信息交換標準碼),由美國國家標準學會ANSI(American National Standard Institute)於1968年正式制定。後又於1972年被ISO/IEC採用,制定爲ISO/IEC 646標準(ISO,即國際標準化組織International Standardization Organization,成立於1946年;IEC,即國際電工技術委員會International Electrotechnical Commission,成立於1906年;ISO/IEC每每用來表示由這兩大國際組織聯合制定的標準)。
因爲ASCII碼要晚於EBCDIC碼出現(網上也有文章說是ASCII碼要早於EBCDIC碼開始設計,但1968年ASCII碼才正式肯定爲標準),ASCII碼的編碼方式參照了EBCDIC碼,並吸收了其經驗教訓,將英文字母進行了連續排列,這方便了程序處理。
3.
ASCII編碼方案雖然不是最先出現的字符編碼方案,但倒是最基礎、最重要、應用最普遍的字符編碼方案。
目前所通行的其餘字符編碼方案,好比ISO-885九、GB系列(GB23十二、GBK、GB18030、GB13000)、Big五、Unicode等等,均直接或間接兼容ASCII碼。
而像EBCDIC這樣與ASCII徹底不兼容的編碼方案,基本上處於已淘汰或將要淘汰的境地。
3、ASCII字符編碼方案介紹
1.
ASCII碼使用七個二進制數字(bit比特、位)來表示一個字符,總共表示128個字符(2^7 = 128,二進制編碼爲0000 0000 ~ 0111 1111,對應的十進制就是0~127)。
因爲我的計算機廣泛採用8位一個字節來進行存取與處理,所以剩下最高位的那1比特通常爲0,但有時也被用做一些通信系統的奇偶校驗位。
2.
ASCII字符集共計有128個字符(見上表),碼點編號(即字符編號)從0到127(二進制爲從0000 0000到0111 1111,十六進制爲從0x00到0x7F),二進制最高位都是0。其中:
1)0~31:控制字符或通信專用字符(不可顯示不可打印字符),如0x07(BEL響鈴)會讓計算機發出嗶的一聲、0x00(NUL空,注意不是空格)一般用於指示字符串的結束、0x0D(CR回車)和0x0A(LF換行)用於指示打印機的打印針頭退到行首(即回車)並移到下一行(即換行)等。
2)32~126:可顯示可打印字符(其中32爲可顯示但不可打印的空格字符),48~57爲0-9的阿拉伯數字,65~90爲26個大寫英文字母,97~122爲26個小寫英文字母,其他的是一些標點符號、運算符號等。
3)127:控制字符DEL。
3.
這時候的字符編解碼很是簡單,好比若要將字符序列編碼爲二進制流寫入存儲設備,只須要將該字符序列裏的各個字符在ASCII字符集中的字符編號(即碼點編號),直接以一個二進制字節寫入存儲設備便可,字符編號就是字符編碼,中間不須要通過特別的編碼算法進行字符編號到字符編碼的轉換計算,更不存在所謂碼元序列到字節序列的轉換。