跳至內容

代碼

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
代碼
上級分類記號、​規則為基礎的系統 編輯
用途資料轉換 編輯
莫爾斯電碼是一種著名的代碼

通信資訊處理中,代碼code)是指一套轉換信息的規則系統,例如將一個字母單詞、聲音、圖像或手勢轉換為另一種形式或表達,有時還會縮短加密以便通過某種信道或存儲媒體通信。一個最早的例子是語言的發明,它使人可以通過說話將他看到、聽到、感受到或想到的事情表達給其他人。但是,說話的通信範圍局限於聲音可以有效傳播、辨識的範圍,並且發言只能傳達給現有的聽眾。將言談轉化為視覺符號寫作擴大了跨越時間空間的通信表達。代碼有時亦稱代號等。

而編碼(encoding)能將源頭英語Communication source的信息轉化為便於通信或存儲的符號。解碼(Decoding)則是將其逆向還原的過程,將代碼符號轉化回收件人可以理解的形式。

編碼的其中一個原因是在平實語言英語Plain language、口語或寫作難以實現實現的情況下進行通信。例如,旗語可以用特定標記表達特定信息,站在遠處的另一個人可以解讀標識來重現該信息。

理論

[編輯]

信息論計算機科學中,代碼通常被認為是一個獨特的從一個源字母表表示成符號的算法,通過編碼的字符串,這些字符串可能在一些其他的目標字母表中。通過連接編碼字符串獲得在源字母表上表示符號序列的擴展代碼。

在給出一個數學上精確的定義之前,這是一個簡短的例子。映射

是一個代碼,其源字母表是集合 ,其目標字母表是集合 。使用擴展代碼,編碼後的字符串0011001可以被分組成代碼字0 011 0 01,這些代碼又可以解碼為源符號序列 acab

使用形式語言理論中的術語,這個概念的精確數學定義如下:讓 S 和 T 是兩個有限集,分別稱為源字母表和目標字母表代碼 是將每個符號從 S 映射到 T 上的符號序列總函數 的擴展 同態,它自然地把每個源符號的序列映射到目標符號序列。

可變長度編碼

[編輯]

在本節中,我們考慮從某個字典中的代碼字英語code word對每個源(明文)字符進行編碼的代碼,這些代碼字的連接為我們提供了已編碼的字符串。當明文字符具有不同的概率時,可變長度代碼特別有用;另見熵編碼

前綴代碼是具有「前綴屬性」的代碼:系統中不存在作為集合中任何其他有效代碼字的前綴(開始)的有效代碼字。霍夫曼編碼是最知名的用於導出前綴碼的算法。即使代碼不是由霍夫曼算法產生的,前綴代碼也被廣泛稱為「霍夫曼代碼」。前綴代碼的其他示例是國家呼叫代碼ISBN 的國家和出版商部分,以及 UMTS WCDMA 3G 無線標準中使用的輔助同步代碼。

卡夫不等式給出了前綴碼中可能存在的碼字長度集。實際上,任何唯一可解碼的一對多代碼,不一定是前綴代碼,都必須滿足卡夫不等式。

錯誤糾正編碼

[編輯]

代碼也可用於以更耐受傳輸或存儲錯誤的方式表示數據。 這種所謂的糾錯碼通過在存儲(或傳輸)的數據中包含精心設計的冗餘來工作。 示例包括漢明碼里德-所羅門碼里德-穆勒碼英語Reed–Muller code哈達碼代碼英語Hadamard codeBCH碼渦輪碼二進制戈萊碼英語Binary Golay codeGoppa碼英語Goppa code低密度奇偶檢查碼時空碼英語Space–time code。 可以優化錯誤檢測代碼以檢測突發錯誤隨機錯誤

例子

[編輯]

溝通中為簡潔使用的代碼

[編輯]

字符編碼

[編輯]

目前最廣為人知並被使用的數據通信代碼(也稱字符表示)是ASCII。 它用7比特二進制數字表示128個字符——即由7個為1或0的位元組成。還有許多其他編碼用一個字節表示每個字符(通常被稱為代碼頁), 整數碼位 (Unicode)或者一個字節序列(UTF-8).

遺傳密碼

[編輯]

哥德爾代碼

[編輯]

數學中,哥德爾代碼哥德爾不完備定理的基礎。其中的想法是將數學符號映射到一個自然數 (使用一個哥德爾數)。

其他

[編輯]

密碼學

[編輯]

其他例子

[編輯]

編碼的其他例子包括:

解碼的其他例子包括:

代碼與首字母縮略詞

[編輯]

首字母縮略字和縮寫可以認為是一種代碼,並且某種意義上所有語言和書寫系統都是人類思維的代碼。

參見

[編輯]

參考資料

[編輯]