代碼
此條目沒有列出任何參考或來源。 (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
解碼的其他例子包括: