代碼
此條目沒有列出任何參考或來源。 (2017年6月18日) |
在通信和資訊處理中,代碼(code)是指一套轉換信息的規則系統,例如將一個字母、單詞、聲音、圖像或手勢轉換為另一種形式或表達,有時還會縮短或加密以便通過某種信道或存儲媒體通信。一個最早的例子是語言的發明,它使人可以通過說話將他看到、聽到、感受到或想到的事情表達給其他人。但是,說話的通信範圍局限於聲音可以有效傳播、辨識的範圍,並且發言只能傳達給現有的聽眾。將言談轉化為視覺符號的寫作擴大了跨越時間、空間的通信表達。代碼有時亦稱代號等。
而編碼(encoding)能將源頭的信息轉化為便於通信或存儲的符號。解碼(Decoding)則是將其逆向還原的過程,將代碼符號轉化回收件人可以理解的形式。
編碼的其中一個原因是在平實語言、口語或寫作難以實現實現的情況下進行通信。例如,旗語可以用特定標記表達特定信息,站在遠處的另一個人可以解讀標識來重現該信息。
理論
在信息論和計算機科學中,代碼通常被認為是一個獨特的從一個源字母表表示成符號的算法,通過編碼的字符串,這些字符串可能在一些其他的目標字母表中。通過連接編碼字符串獲得在源字母表上表示符號序列的擴展代碼。
在給出一個數學上精確的定義之前,這是一個簡短的例子。映射
是一個代碼,其源字母表是集合 ,其目標字母表是集合 。使用擴展代碼,編碼後的字符串0011001可以被分組成代碼字0 011 0 01,這些代碼又可以解碼為源符號序列 acab。
使用形式語言理論中的術語,這個概念的精確數學定義如下:讓 S 和 T 是兩個有限集,分別稱為源字母表和目標字母表。 代碼 是將每個符號從 S 映射到 T 上的符號序列的總函數。 的擴展 是 到 的同態,它自然地把每個源符號的序列映射到目標符號序列。
可變長度編碼
在本節中,我們考慮從某個字典中的代碼字對每個源(明文)字符進行編碼的代碼,這些代碼字的連接為我們提供了已編碼的字符串。當明文字符具有不同的概率時,可變長度代碼特別有用;另見熵編碼。
前綴代碼是具有「前綴屬性」的代碼:系統中不存在作為集合中任何其他有效代碼字的前綴(開始)的有效代碼字。霍夫曼編碼是最知名的用於導出前綴碼的算法。即使代碼不是由霍夫曼算法產生的,前綴代碼也被廣泛稱為「霍夫曼代碼」。前綴代碼的其他示例是國家呼叫代碼、ISBN 的國家和出版商部分,以及 UMTS WCDMA 3G 無線標準中使用的輔助同步代碼。
卡夫不等式給出了前綴碼中可能存在的碼字長度集。實際上,任何唯一可解碼的一對多代碼,不一定是前綴代碼,都必須滿足卡夫不等式。
錯誤糾正編碼
代碼也可用於以更耐受傳輸或存儲錯誤的方式表示數據。 這種所謂的糾錯碼通過在存儲(或傳輸)的數據中包含精心設計的冗餘來工作。 示例包括漢明碼、里德-所羅門碼、里德-穆勒碼、哈達碼代碼、BCH碼、渦輪碼、二進制戈萊碼、Goppa碼、低密度奇偶檢查碼和時空碼。 可以優化錯誤檢測代碼以檢測突發錯誤或隨機錯誤。
例子
溝通中為簡潔使用的代碼
字符編碼
目前最廣為人知並被使用的數據通信代碼(也稱字符表示)是ASCII。 它用7比特二進制數字表示128個字符——即由7個為1或0的位元組成。還有許多其他編碼用一個字節表示每個字符(通常被稱為代碼頁), 整數碼位 (Unicode)或者一個字節序列(UTF-8).
遺傳密碼
哥德爾代碼
在數學中,哥德爾代碼是哥德爾不完備定理的基礎。其中的想法是將數學符號映射到一個自然數 (使用一個哥德爾數)。
其他
密碼學
其他例子
編碼的其他例子包括:
- 編碼 (認知中) 是解釋傳入刺激的基本感知過程; 從技術上講,它是一個複雜的、多階段的過程,將相對客觀的感官輸入(如光、聲)轉化為主觀上有意義的體驗。
- 內容格式 是一種為了將一種特定類型的數據轉換成信息的特定編碼格式。
- 文本編碼使用置標語言來標記結構和其他文字的特性以方便計算機處理。(另見文本編碼規範。)
- 正式語言 A 的語義編碼非正式語言 B 是一種使用語言 B 表示語言 A 的所有術語(例如程序或描述)的方法。
- 數據壓縮,將信號轉換為針對傳輸或存儲優化的代碼,通常使用編解碼器完成。
- 神經編碼是信息在神經元中表達的方式。
- 記憶編碼,將感覺轉化為記憶的過程。
- 電視編碼:NTSC, PAL 和 SECAM
解碼的其他例子包括: