- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]信息论程序 半字节 哈弗曼 重复码编译码
实验一 英文半字节压缩编码技术
实验二 Huffman编码
实验三 重复码编译码方法
实验一 英文半字节压缩编码技术
一、实验目的
1、理解信源编码的作用和目的,掌握数据压缩的基本思想;
2、掌握数据压缩中常用的比特流操作办法;
3、掌握英文半字节压缩编码技术。
二、实验内容
通过C语言编程,实现对一般英文文本文件的半字节压缩编码与译码程序,并观察编码、译码结果以及压缩效果。
三、实验原理
对于一个通信系统来说,信息传输的有效性、可靠性、安全性和认证性是人们的主要目标。其中,信息传输的有效性指的是尽可能的使用较短的时间和较少的设备等资源来传送尽可能多的信息,而这一目的主要是通过信源编码这个环节来实现的。
虽然有许许多多不同的信源编码方法,但总的说来,信源编码主要是通过减少或消除信源的剩余度来提高传输效率的。而且,有时人们为了追求更高的传输效率,在满足实际需求的情况下,还允许在编译码过程中存在一定程度的失真,这就是所谓的有损压缩。当然,针对不同的应用要求,可以选择不同的压缩编码办法,为了方便理解和实现,针对一般的英文文本,可以设计一种半字节压缩编码方法来实现数据的压缩。
(一)有损处理
在一般英文文本中,除了大、小写英文字母外,还有多种不同的标点符号。为了达到在不影响文章大意的前提下,尽可能的减少需编码的符号数,以提高信息传输效率的目的,可采取这样的处理方法:
1) 所有的英文字母不区分大、小写(如:将所有的大写英文字母变成小写字母);
2) 保留标点符号:“,”、“。”、“?”“:”和“ ”;
3) 将“!”和“;”变为“。”,其他符号全部变成“ ”。
这样,原来的英文文本就变成了一个新的文本,该文本全部由26个英文字母和“,”、“。”、“?”、“:”以及“ ”这31种符号组成,而且,文章的大意并没有发生大的变化。可以认为这种失真是在允许的失真范围之内的。
当然,为了简化操作,上面的第一步也可省略。虽然这样会使输出文件中既有大写字符,又有小写字符,但只需在后面的编码操作时将大、小写等同处理,则同样达到了不区分大小写的目的。
(二)数据压缩
在计算机中,文本文件中的每个符号都是由8位的ASCII码所构成,共有256种取值的可能。既然经过上述有损处理后文件中只存在31种不同的符号,所以在压缩编码过程中只需对31种符号进行编码,就可以大大压缩文本文件的数据量。考虑到各字母以及符号出现的概率,并考虑码字的可分离性,可以采取以下的编码方法来进行数据的压缩:
1) 对于概率最大的15个符号分别编以“0000”~“1110”的码字:
符号 码字 符号 码字 符号 码字 符号 码字
空格 0000 e 0100 l 1000 s 1100
a 0001 f 0101 n 1001 t 1101
c 0010 h 0110 o 1010 u 1110
d 0011 i 0111 r 1011
2) 对于其余的16个符号分别编以“1111 0000”~“1111 1111”的码字。
符号 码字 符号 码字 符号 码字 符号 码字
, 1111 0000 b 1111 0100 m 1111 1000 w 1111 1100
. 1111 0001 g 1111 0101 p 1111 1001 x 1111 1101
? 1111 0010 j 1111 0110 q 1111 1010 y 1111 1110
: 1111 0011 k 1111 0111 v 1111 1011 z 1111 1111
这样,一些最经常出现的符号从原来的8bit变为4bit,达到了数据压缩的目的。
从表中可以看出,后16个符号的码字中前4比特均为“1111”,因此可先向编码文件输出前4比特,然后再输出后4比特。这样的好处是:不论是前15种符号还是后16种符号,都可执行同一种输出操作(输出4比特),只是对于后16种符号是连续执行两次而已。
(三)译码
译码过程是编码的逆过程,解码后得到由这31种符号所组成的文本文件。
由于后16个符号的码字中前4比特均为“1111”,因此可设计译码过程为:每次读取4bit。若不为“1111”,则根据此次读取的4bit译为相应的前15个符号之一;若为“1111”,则再次读取4bit,并根据后4bit译为相应的后16个符号之一。这样,不论是前15种符号还是后16种符号的译码,都可执行同一种读取操作(读取4比特),只是对于后16种符号是连续执行两次而已。
(四)半字节操作
在计算机中,所有对数据的操作(不论是数据的存储还是对文件的读写)都是以字节(8bit)为基本单位的,而我们的编码与解码都是以半个字节(4bti)为单位的,因此需要运用位操作来进行数据的控制
文档评论(0)