Loading AI tools
表示資訊的方法 来自维基百科,自由的百科全书
在通信和资讯处理中,代码(code)是指一套转换信息的规则系统,例如将一个字母、单词、声音、图像或手势转换为另一种形式或表达,有时还会缩短或加密以便通过某种信道或存储媒体通信。一个最早的例子是语言的发明,它使人可以通过说话将他看到、听到、感受到或想到的事情表达给其他人。但是,说话的通信范围局限于声音可以有效传播、辨识的范围,并且发言只能传达给现有的听众。将言谈转化为视觉符号的写作扩大了跨越时间、空间的通信表达。代码有时亦称代号等。
此条目没有列出任何参考或来源。 (2017年6月18日) |
而编码(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).
编码的其他例子包括:
解码的其他例子包括: