1. 程式人生 > 其它 >力扣 1518. 換酒問題 難度:簡單

力扣 1518. 換酒問題 難度:簡單

在計算機的世界裡,資訊的表示方式只有0和1;人類的資訊表示方式可以是語言文字、影象、聲音等。那麼將人類資訊轉換為二進位制儲存到計算機中的這個過程,稱之為編碼。更廣義地將就是把資訊從一種形式轉換為另一種形式的過程叫做編碼

在計算機中,每一個二進位制位(bit)有0和1兩種狀態;每8個二進位制位組成了一個位元組(byte);計算機儲存的最小單位就是位元組。也就是說一個位元組可以組合出256種不同的狀態,每一個狀態對應一個符號,也就是256個符號,從00000000到11111111

ASCII 碼

上個世紀60年代,美國製定了一套字元編碼,描述英語中的字元和二進位制數(1位元組)的對應關係,這被稱為ASCII碼

ASCII碼一共定義了128個字元的編碼,使用了8位二進數中的後7位,最高位是符號位0。比如A是65(這是十進位制數,對應的二進位制是01000001)

非ASCII編碼

英語用128個符號編碼足夠使用了,但對於其他語言來說是不夠的。於是ISO組織在ASCII碼基礎上又制定了一些標準用來擴充套件ASCII編碼,它們是ISO-8859-1~ISO-8859-15,其中ISO-8859-1涵蓋了大多數西歐語言字元,所有應用的最廣泛

ISO組織利用位元組中閒置的最高位編入新的符號,這樣一來就可以在採用單位元組編碼的同時表示256個符號。ISO-8859-1向下相容ASCII碼,其編碼範圍在0-127之間完全和ASCII一致,128-255之間的字元是新增的內容。此字符集主要支援歐洲使用

但是,這裡又出現了新的問題。不同的國家有不同的字母,因此,哪怕它們都使用256個符號的編碼方式,代表的字母卻不一樣。

至於亞洲國家的文字,使用的符號就更多了,漢字就多達10萬左右。一個位元組只能表示256種符號,肯定是不夠的,就必須使用多個位元組表達一個符號。比如,簡體中文常見的編碼方式是GB2312,使用兩個位元組表示一個漢字,所以理論上最多可以表示 256 x 256 = 65536 個符號

Unicode編碼

世界上存在著多種編碼方式,同一個二進位制數字可以被解釋成不同的符號。因此,要想開啟一個文字檔案,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼

可以想象,如果有一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,那麼亂碼問題就會消失。這就是 Unicode,就像它的名字都表示的,這是一種所有符號的編碼

  • Unicode編碼字符集旨在收集全球所有的字元,為每個字元分配唯一的字元編號即程式碼點(Code Point),用U+緊跟著十六進位制數表示
  • 所有字元按照使用上的頻繁度劃分為17個平面(編號為0-16),即基本的多語言平面和增補平面。所以17個平面總計有17×65,536=1,114,112個碼點
    • 基本的多語言平面(英文為Basic Multilingual Plane,簡稱BMP)又稱平面0,收集了使用最廣泛的字元,程式碼點從U+0000到U+FFFF,每個平面有2^16=65536個碼點
    • 增補平面從平面116,分為增補多語言平面(平面1)、增補象形平面(平面2)、保留平面(平面313)、增補專用平面等,每個增補平面也有2^16=65536個碼點

本文來自部落格園,作者:不二橘子醬,轉載請註明原文連結:https://www.cnblogs.com/marmaladeHY/p/15720369.html