代码

本页使用了标题或全文手工转换
维基百科,自由的百科全书
(重定向自Code
莫尔斯电码是一种著名的代码

通信資訊處理中,代码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).

遗传密码

哥德尔代码

数学中,哥德尔代码哥德尔不完备定理的基础。其中的想法是将數學符號映射到一个自然数 (使用一个哥德尔数)。

其他

密码学

其他例子

编码的其他例子包括:

解码的其他例子包括:

代码与首字母缩略词

首字母縮略字和缩写可以认为是一种代码,并且某种意义上所有語言和书写系统都是人类思维的代码。

参见

参考资料