計算機基礎——什麼是編碼?

2020-12-23 qian端狗

計算機基礎--什麼是編碼?

作者名:麗斯

什麼是編碼

編碼是信息從一種形式或格式轉換為另一種形式的過程,簡單來講就是語言的翻譯過程。我們都知道計算機使用的是機器語言即二進位碼,相信大部分人都無法流暢的閱讀二進位碼,於是為了能夠讓人類更好的理解計算機輸出的結果就需要將機器語言轉換為自然語言,比如英語、俄語和中文等。 這看似簡單的語言轉換過程隨著計算機的普及與網際網路化對語言字符的編碼衝擊也越來越大,編碼規範的調整也伴隨著整個計算機發展歷史。

現代編碼模型

為了能夠更精確的描述在編碼過程中各個產物的歸屬以便正確的描述產物所發揮的功能,於是多事之人將現代的編碼整理為一套可以說明的模型而且分為五層之多。

現代編碼模型之分層:

1. 抽象字符表(ACR:Abstract character repertoire):是一個系統支持的所有抽象字符的集合,簡單來說就是該層規範要確定一個系統能夠包含的字符和字符形式,比如Windows支持中文,那麼它的抽象字符表一定有中文字符集合而且也適配不同編碼方式指定具體是何字符。

2. 編碼字符集(CCS:Coded Character Set):是將字符集中每個字符映射到1個坐標(整數值對:x, y)或者表示為1個非負整數。字符集及碼位映射稱為編碼字符集。例如,在一個給定的字符表中,表示大寫拉丁字母「A」的字符被賦予整數65、字符「B」是66,如此繼續下去。簡單來說這就是一個映射關係表,將一串碼值映射到抽象字符表裡的特定字符。

3. 字符編碼表(CEF:Character Encoding Form):該層也稱為」storage format」,對於一個包含幾乎全球語言的字符集,比如Unicode字符集最多可以2的31次方個字符,用4個字節來存儲一個,但是真的有必要在時時刻刻都使用4個字節來記錄一個字符嗎?很顯然不是這樣,比如拉丁字母「A」實際上需要二進位碼01000001一個字節就可以表示,於是需要一種類似於壓縮方式的方法來儘量用最少空間存儲不同種類字符的方式比如後面會提到的UTF。所以這一層主要是描述字符編碼所能採用的編碼格式。

4. 字符編碼方案(CES:Character Encoding Scheme):也稱作」serialization format」,將定長的整型值(即碼元)映射到8位字節序列,以便編碼後的數據的文件存儲或網絡傳輸。

5. 傳輸編碼語法(transfer encoding syntax):用於處理上一層次的字符編碼方案提供的字節序列。一般其功能包括兩種:一種是把字節序列的值映射到一套更受限制的值域內,以滿足傳輸環境的限制,例如Email傳輸時 Base64或者quoted-printable,都是把8位的字節編碼為7位長的數據;另一種是壓縮字節序列的值,如 LZW 或者 行程長度編碼等無損壓縮技術。

常用的編碼

ASCII

ASCII(發音: [/ski/]) ,American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套計算機編碼系統。它主要用於顯示現代英語,而其擴展版本 EASCII 則可以部分支持其他西歐語言,並等同於國際標準ISO/IEC 646]。 ASCII編碼由1個字節8bit來標識字符編碼表映射關係,如果按字節來算最多支持256個字符映射,但是由於最高位始終為0,支持的字符更少了。下圖為編碼表:

從圖中可以看到,如果使用ASCII碼錶,將二進位高四位(0100)低四位 (0001)對應ASCII碼錶就得到了A字符,如果要得到I LOVE Y,計算機只需要得到二級制01001001(I)00100000(空格)01001100(L)01001111(O)01010110(V)01000101(E)00100000(空格)01011001(Y)。 ASCII碼所對應的所有字符高四位首位都為0,所以ASCII碼成功的用7個比特位就完成了計算機語言轉換為自然語言(人類語言)的壯舉,這看起來很令人振奮,美國人天真的以為IPv4的最大數255.255.255.255(32位)總計4,294,967,296個地址(其中還有些專用地址佔去一小部分)就能覆蓋全球的網絡設備。所以說當其他國家的語言比如中文、日文和阿拉伯文需要用計算機顯示的時候就完全無法使用ASCII碼如此少量的編碼映射方式。

GB2312

1974年8月,中國開始了748工程,包括了用計算機來處理中文字,展開了各種研究工作,後來到1980年公布了 GB 2312-80漢字編碼的國家標準。 GB 2312標準共收錄6763個漢字 ,其中一級漢字3755個, 二級漢字3008個;同時收錄了包括 拉丁字母、 希臘字母、 日文、平假名及片假名字母、 俄語在內的682個字符。 看起來GB2312已經很牛逼了,使用2個字節作為編碼字符集的空間,但是6763個漢字是真的不夠用啊。

GBK

我漢語博大精深,只有6763個字怎麼夠?於是GBK中在保證不和GB2312、ASCII衝突(即兼容GB2312和ASCII)的前提下,也用每個字佔據2位元組的方式又編碼了許多漢字。經過GBK編碼後,可以表示的漢字達到了20902個,另有984個漢語標點符號、部首等。值得注意的是這20902個漢字還包含了繁體字。

GB18030

然而,GBK的兩萬多字也已經無法滿足我們的需求了,還有更多可能你自己從來沒見過的漢字需要編碼。這時候顯然只用2位元組表示一個字已經不夠用了(2位元組最多只有65536種組合,然而為了和ASCII兼容,最高位不能為0就已經直接淘汰了一半的組合,只剩下3萬多種組合無法滿足全部漢字要求)。因此GB18030多出來的漢字使用4位元組編碼。當然,為了兼容GBK,這個四字節的前兩位顯然不能與GBK衝突(實操中發現後兩位也並沒有和GBK衝突)。我國在2000年和2005年分別頒布的兩次GB18030編碼,其中2005年的是在2000年基礎上進一步補充。至此,GB18030編碼的中文文件已經有七萬多個漢字了,甚至包含了少數民族文字。

Unicode

在ASCII編碼明顯不夠用後,美國國家標準學會又搞了幾套ISO的編碼規範來兼容其他中歐等國家的語言,但是兼容性還是有不少問題。最終美國加州的Unicode組織他們放大招搞了Unicode(萬國碼)打算藉此一統江湖,最早Unicode也是最高16位2位元組來進行映射,經過幾番修改最終可以以最長32位4位元組的空間來映射最多2的31次方個字符。看起來一切完美了,當然如果以後有了星際旅行並不一定能夠完全標識全宇宙的文字。

從上面這一大堆改動來看,不管中國還是美國,在處理位數上遠遠低估了後續可能產生的擴展性,你可能會覺得一早就用4個字節來標識全球所有字符就完事了費那麼大勁來回改。給你看一幅圖你或許就會明白為什麼那時候的科學家那麼謹小慎微了。如圖:

1956年IBM的硬碟,可存儲5MB的數據

UTF-8又是什麼

Unicode確實是一套能夠滿足全球使用的字符集,但是難道真的需要每一個字符都佔用4個字節嗎?雖然現在的存儲空間已經足夠大了,但是4個字節一個字符的方式還是很不明智的,比如字符「A」二進位碼01000001卻需要以00000000000000000000000001000001的方式存儲。這一定不是我們想要的。於是UTF(Unicode/UCS Transformation Format)應運而生,UTF是字符編碼五層次模型的第三層,通過特定的規則對Unicode字符編碼進行一定的壓縮和轉換以便快捷傳輸。 UTF的代表就是UTF-16和UTF-8,千萬不要以為UTF-16比UTF-8更厲害能夠容納更多字符,字符容納數量都是是Unicode編碼集所確定的範圍,UTF只是通過不同的轉換形式更快更高效的找到特定字符。而UFT-16 比較奇葩,它使用 2 個或者 4 個字節來存儲。 對於 Unicode 編號範圍在 0 ~ FFFF 之間的字符,UTF-16 使用兩個字節存儲,並且直接存儲 Unicode 編號,不用進行編碼轉換,這跟 UTF-32 非常類似。 對於 Unicode 編號範圍在 10000~10FFFF 之間的字符,UTF-16 使用四個字節存儲,具體來說就是:將字符編號的所有比特位分成兩部分,較高的一些比特位用一個值介於 D800~DBFF 之間的雙字節存儲,較低的一些比特位(剩下的比特位)用一個值介於 DC00~DFFF 之間的雙字節存儲。

設計UTF-8編碼表達方式的理由:

1、單字節字符的最高有效比特永遠是0(大家可以看看其他編碼方式如何彆扭的兼容ASCII碼的);

2、多字節序列中的首個字符組的幾個最高有效比特決定了序列的長度。最高有效位為110的是2位元組序列,而1110的是三字節序列,如此類推;

3、多字節序列中其餘的字節中的首兩個最高有效比特為10。

轉換關係如下圖:

這樣我們根據所要兼容的語言不同根據UTF-8多字節最高有效比特去判斷編碼最終使用了多少個字節來存儲,其餘的字節也都滿足最高有效比特為10的特點有了一定的糾錯功能。 簡單一些理解就是UTF-16就是通過2個字節16位來控制壓縮比例,而UTF-8已經以高精度的1個字節8位來控制壓縮比例了。當然還有中UTF-32就可想而知,基本跟Unicode如出一轍。

相關焦點

  • 漫畫:「哈夫曼編碼」 是什麼鬼?
    沒看過的小夥伴可以點擊下方連結:漫畫:什麼是 「哈夫曼樹」 ?那麼,這種數據結構究竟有什麼用呢?我們今天就來揭曉答案。計算機系統是如何存儲信息的呢?計算機不是人,它不認識中文和英文,更不認識圖片和視頻,它唯一「認識」的就是0(低電平)和1(高電平)。因此,我們在計算機上看到的一切文字、圖像、音頻、視頻,底層都是用二進位來存儲和傳輸的。
  • 計算機系統基礎:校驗碼知識筆記
    1、校驗碼概念校驗碼主要是為了解決計算機各部件進行數據傳輸和交換,確保傳送過程的正確無誤,一是為了提高硬體電路的可靠性,二是提高代碼的校驗能力。通常會用校驗碼來檢查傳送的數據是否正確。校驗碼編碼分為兩類:合法編碼、錯誤編碼。合理的設計錯誤編碼和編碼規則,可以在數據傳輸的時候發現某種錯誤是就會變成錯誤編碼,從而達到檢驗錯誤的目的。碼距:指的是一個編碼系統中任意兩個合法編碼之間至少有多少個二進位位不同。常用的三種校驗碼:奇偶校驗碼、海明碼、循環冗餘校驗碼。
  • 五筆打字技巧分享,漢字的編碼基礎
    我們學習五筆打字,我們首先要學習漢字的編碼基礎,我們要明白漢字是如何通過五筆打字的。漢字的編碼基礎首先我們要明白字根的含義,字根是由筆畫交叉而成的相對固定的結構,比如漢字「苦」,它是由「艹」和「古」構成,而「艹」和「古」就叫做字根。
  • 中文編碼雜談
    最後,本文不涉及具體軟體的亂碼問題解決,如ssh,shell,vim,screen等,這些話題留給劍豪同學專文闡述。一切都是因為電腦不識字電腦很聰明,可以幫我們做很多事情,最開始主要是科學計算,這也是為什麼電腦別名計算機。
  • 計算機基礎的鍵盤和常用快捷鍵認識「計算機基礎知識學習筆記2020...
    簡介 INTRODUCTION通過本課程,我們可以收穫什麼?計算機基礎的認識可通過本課程,我們可以收穫什麼?相關快捷鍵技巧:F5刷新(瀏覽器、電腦桌面)PrintScrn全屏截屏(在F12的右側,用來桌面截屏)alt+printScrn當前窗口截屏win+r 運行窗口(輸入命令,快捷地出現某個程序)快速打開計算機
  • 全國2020年10月自考計算機基礎與程序設計02275真題
    全國2020年10月自考計算機基礎與程序設計02275真題一、單項選擇題:本大題共20小題,每小題1分,共20分。在每小題列出的備選項中只有一項是最符合題目要求的,請將其選出。1.計算機輔助設計的英文縮寫是A. CADB. CAEC. CAMD.
  • MPEG-4編碼技術所具有的優點
    1 高壓縮性優點MPEC-4為一種效率非常高的編碼標準,最低碼率為5~65kbs。在進行編碼時,要對視頻對象所具有的可操作性以及交互性加強重視,同時還要對多媒體各個應用領域之中的編碼進行兼容處理。此外,MPEC-4還可以對在同一時間發生的不同種數據流進行編碼處理。一個場景之中的眾多視角數據流能夠同步、高效地合成一個數據流。這經常被應用到仿真練習、三維電影和虛擬三維遊戲等領域之中。2 交互性優點MPEC-4為視頻數據提供了訪問工具,例如:刪除,下載、超連結等。
  • 2015年4月成人自考計算機基礎與程序設計真題
    1.利用計算機進行機械設計屬於( )A.科學計算B.信息處理C.過程控制D.計算機輔助設計2.在下面存儲容量單位中,最小的是( )A.bitB.ByteC.KBD.GB點擊進入:自考報名有疑問、不知道如何選擇主考院校及專業
  • 邊緣AI+計算機視頻給木板架行業帶來了什麼
    打開APP 邊緣AI+計算機視頻給木板架行業帶來了什麼 科技行者 發表於 2020-03-26 09:41:17 另一方面,計算機視覺則是人工智慧中的一大分支,旨在通過訓練機器幫助其解釋及理解視覺內容。 計算機視覺的目標之一,在於利用機器通過與人類相同的方式查看並處理圖像。在通過機器學習實現的計算機視覺當中,有一類採用所謂監督學習方法,其中採用規模可觀且附帶注釋的圖像集來構建計算模型。儘管模型訓練往往相當耗時並佔用大量資源,不過一旦訓練完成,該模型即可快速高效地執行各類識別任務。
  • TDEE與基礎代謝率BMR計算機
    TDEE與基礎代謝率BMR介紹基礎代謝率 BMR(Basal Metabolic Rate)
  • 為什麼說量子計算機是科學界的又一騙局?
    什麼是波粒二象性呢?即光由多個粒子組成,又以波的形式存在。由於光粒子是無法單獨剝離的,所以又稱為「量子糾纏」。(詳見《為什麼說量子通信是一個科學騙局?》)既然光粒子是糾纏在一起不可剝離的,那麼所謂的「光子通信」「光子計算」,在理論上也就是行不通。如果光子被單獨剝離出來了,那麼就證明波粒二象性是錯的。
  • 2020雲南農信社計算機知識點:馮·諾依曼理論
    目前廣泛應用的計算機仍然是依據馮·諾依曼提出的結構體系和工作原理來設計製造的,統稱為「馮·諾依曼計算機」。(一)計算機的五大組成計算機由運算器、控制器、存儲器、輸入設備和輸出設備五大部件組成。(二)採用二進位採用二進位形式存儲所有的信息,即計算機內不管是程序還是待處理的數據或是其他信息均為二進位編碼形式。(三)工作原理這是馮·諾依曼思想的核心。
  • 漢字編碼擴充,終於可以打出這些生僻字了!
    我們都知道,現代計算機是美國人造出來的,他們為了處理文字方便,給 26 個字母在電腦裡設置了一套編碼標準。簡單來說,就相當於規定電腦裡的一號字符是「 A 」,二號字符是「 B 」。ASCII 碼錶在當時不亞於現在的九九乘法表,是計算機處理文字的基礎。然而 ASCII 碼有個問題:由於當時硬碟比較小,能有個 1 MB 就算不錯的了,所以整個 ASCII 表也只能定義 256 個字符。。。
  • RAW、log,ALL-I和IPB各是什麼 詳解視頻編碼格式
    不過對於一些不太熟悉視頻拍攝的用戶來說可能會有些困惑,什麼是RAW視頻,什麼又是log,ALL-I和IPB格式又有什麼區別,不知道自己該如何設置,這裡就為大家略微詳細的解釋一下視頻的編碼格式,並讓大家能夠大致了解RAW視頻和log的區別。
  • 計算機基礎知識|計算機的特點、用途和分類
    計算機可以將預先編好的一組指令(稱為程序)先「記」下來,然後自動地逐條取出這些指令並執行,工作過程完全自動化,且可以反覆進行。(5)網絡與通信功能。計算機技術發展到今天,不僅可將一個個城市的計算機連成一個網絡,而且能將一個個國家的計算機連在一個計算機網上。
  • 0-10000記憶編碼,送給那些覺得自己記憶力衰退的人
    記憶編碼是老實人的一種最簡單提升自己記憶的方式,也有很多記憶大神在用記憶編碼。今天分享的是國內獨創的記憶編碼,記200個物品,就可以達到10000基礎的記憶編碼。讓你自己的記憶不再難受。同時會形成系列更新:1、0-10000記憶編碼內容,打好記憶基礎2、1秒圖像記憶,大神成長路3、1分鐘語音記憶訓練,複製別人的思維邏輯4、1分鐘視頻記憶,開始你的表演路5、人像圖庫建立,讓你見過的人過目不忘6、碎片化痛苦記憶刪除,不開心記憶刪除,晚上無噩夢7、記憶加強與弱化自己決定8、70
  • e絡盟推出一體化pi-top 計算機以支持STEM學習
    安富利旗下全球電子元器件產品與解決方案分銷商 e絡盟 宣布發售新型可編程計算設備pi-top [4],以便為教育工作者和學生,以及創客和開發者的數字創製、編碼和實踐項目提供支持。
  • 計算機基礎期末試題
    絕密★啟用前計算機基礎試題一、單項選擇題(本大題共20小題,每小題1分,共20分)1.下列設備中,既是輸入設備又是輸出設備的是(   )A.鍵盤 B.硬碟C.滑鼠 D.印表機2.計算機能直接識別的語言是(   )A.機器語言 B.彙編語言C.中級語言 D.高級語言3.十進位數90.25轉換成二進位數的結果是
  • 計算機原理:理論基礎(圖靈機)與(馮諾伊曼)體系結構!
    相信在這個時代,工作工程中使用最多的莫過於計算機,那麼你知道計算機的原理是什麼嗎?近期在V2EX論壇就有這樣一個類似問題引起大家的討論,就是計算機的原理是圖靈機嗎?這位網友所提出的問題也是很有探討意義:如果說計算機是圖靈機演變的,那麼圖靈機的設計理念是什麼?
  • 花王紙尿褲沒有螢光編碼為什麼 螢光編碼起到什麼作用
    在日常生活中,有一些家長選擇在商場購買花王紙尿褲,而另一些家長則選擇在自己知曉的其它渠道購買花王紙尿褲,但是並不能保證所有的渠道都能購買到正品,所以很多家長都有通過查看花王紙尿褲上的螢光編碼來辨別其真偽。但是有一些家長表示自己購買的花王紙尿褲上沒有螢光編碼,這是為什麼呢?