海明编码报告-_第1页
海明编码报告-_第2页
海明编码报告-_第3页
海明编码报告-_第4页
海明编码报告-_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络课程设计计算机网络课程设计 课程设计题目 海明码设计课程设计题目 海明码设计 学学 号 号 201320181519201320181519 姓姓 名 彭磊名 彭磊 专专 业 电子商务业 电子商务 班班 级级 1321815 1321815 20152015 年年 0606 月月 1717 日日 1 一 海明编码原理 海明码是一种可以纠正一位差错发现两位差错的编码 它是利用在信息位 为 k 位 增加 r 位冗余位 构成一个 n k r 位的码字 然后用 r 个监督关系式 产生的 r 个校正因子来区分无错和在码字中的 n 个不同位置的一位错 它必需 满足以下关系式 r n 1 或 2r k r 1 海明码的编码效率为 R k k r 式中 k 为信息位位数 r 为增加冗余位位数 2 海明码的生成与接收 a 每个校验位 Ri 被分配在海明码的第 2 的 i 次方的位置上 b 海明码的每一位 Hi 是由多个 1 个校验值进行校验的 被校验码的 位置码是所有校验这位的校验位位置码之和 二 海明编码方法 1 海明码的生成 顺序生成法 例 已知 信息码为 1 1 0 0 1 1 0 0 k 8 求 海明码码字 解 1 把冗余码 p1 p2 p3 顺序插入信息码中 得海明码 码字 p1 p2 1 p3 1 0 0 p4 1 1 0 0 码位 1 2 3 4 5 6 7 8 9 10 11 12 其中 p1 p2 p3 p4 分别插于 2k位 k 0 1 2 3 码位分别为 1 2 4 8 2 冗余码 p1 p2 p3 p4 的矩阵变换 相当于监督关系式 2 3 把线性码位的值的偶校验作为冗余码的值 设冗余码初值为 0 P1 0 1 1 0 1 0 1 P2 0 1 0 0 1 0 0 P3 0 1 0 0 0 1 P4 0 1 1 0 0 0 4 海明码为 1 0 1 1 1 0 0 0 1 1 0 0 2 海明码的接收 例 已知 接收的码字为 1 0 0 1 1 0 0 0 1 1 0 0 k 8 求 发送端的信息码 解 1 设错误累加器 err 初值 0 2 求出冗余码的偶校验和 并按码位累加到 err 中 A 1 0 1 0 1 0 1 err err 20 1 B 0 0 0 0 1 0 1 err err 21 3 C 1 1 0 0 0 0 err err 0 3 D 0 1 1 0 0 0 err err 0 3 由 err 0 可知接收码字有错 3 码字的错误位置就是错误累加器 err 的值 3 4 纠错 对码字的第 3 位值取反得正确码字 1 0 1 1 1 0 0 0 1 1 0 0 5 把位于 2k位的冗余码删除得信息码 1 1 0 0 1 1 0 0 三 程序 3 include void output int num int InputCheck int Num void CodeSq int Num int Out void bianma int Num int bNum 15 int cifang int a int b void yima int Num int bNum 15 int Yout void jieshou int Num void main int bNum 4 15 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 int InputNum 11 输入 11 位数 int Out 15 int Yout 4 int i 0 printf Please input 11 numbers only 0 or 1 n for i 0 i 11 i scanf d if InputCheck InputNum 判断是否输入正确 CodeSq InputNum Out 把 p1 p2 等位加入数据里 printf 初始编码值 n output Out bianma Out bNum 编码 把 p1 p2 等为解出来 printf 海明编码值 n output Out Out 10 Out 10 printf 译码输出值 n yima Out bNum Yout 解码输出 判断是否有错 output Out printf 接收值 n 接收值 jieshou Out output InputNum void output int num 4 int i 0 for i 0 i 14 i printf d num i printf n int InputCheck int Num int i 0 int flag 0 for i 0 i1 Num i 0 i Out i 0 j if i 7 i 3 i 1 i 0 j j 1 continue Out i Num j void bianma int Num int bNum 15 int i 0 j 0 k 0 int temp 15 for i 0 i 4 i k 0 5 for j 0 j 15 j temp j Num j bNum i j for j 0 j 15 j if temp j 1 k if k 2 0 Num cifang 2 3 i 1 1 int cifang int a int b int temp 1 while b temp temp a b return temp void yima int Num int bNum 15 int Yout int i j k int temp 15 int sum 0 for i 0 i 4 i Yout i 0 k 0 for j 0 j 15 j temp j Num j bNum i j for j 0 j 15 j if temp j 1 k if k 2 Yout i 1 6 for i 0 i 4 i printf d Yout i printf n for i 0 i 4 i sum sum Yout i cifang 2 3 i if sum 15 printf 错误位 d n 15 sum printf 错误传输值 n output Num printf 纠错值 n Num 15 sum 1 Num 15 sum 1 void jieshou int Num int a 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 int i j 0 for i 0 i 15 i j if i 0 i 1 i 3 i 7 j j 1 else a j Num i for i 1 i 11 i printf d a i 四 程序执行结果 输入错误时 7 由上结果知道如果发送数据有错误 则可以提示发送正确数据 传输无错误 输入合法且传输无错误时 直接输出 不用改错 传输有一个错误时 8 输入无错误 传输有错误时 先纠错在输出 解码值与传输值一致 五 实验小结 这次实验使我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论