文章目录

  • 前言
  • 一、BCH码是什么?
  • 二、BCH编码
    • 1.原理
  • 总结

前言

主要讲述BCH码如何用c语言写出来

一、BCH码是什么?

BCH码是一类重要的纠错码,它把信源待发的信息序列按固定的κ位一组划分成消息组,再将每一消息组独立变换成长为n(n>κ)的二进制数字组,称为码字。如果消息组的数目为M(显然M>=2),由此所获得的M个码字的全体便称为码长为n、信息数目为M的分组码,记为n,M。把消息组变换成码字的过程称为编码,其逆过程称为译码。 比如有60bit数据,我每11bit为一组进行BCH编码(n=11),然后进行BCH编码,得到4位校验位,总位数就是M=15位。

二、BCH编码

1.原理

将上述11bit称为信息位,每次都是用信息位除以生成多项式对应的数(比如生成多项式g(x)=x^4+x+1,则对应10011,就是x的幂的系数)
改进BCH编码算法,去掉生成多项式最高位,判断信息位最高位是否为1,为1就左移并异或生成多项式,如果信息位最高位不是1,则对信息位直接左移1位。
比如任意给一个11位信息位11100011101,10011是对应生成多项式的系数,这里去掉其最高位变为0011,按照上述算法,一共要循环11次,11位信息位的位数。得到最高位的4位1010就是校验位,原来的11位信息位加上4位校验位就得到BCH编码后的数据包。

代码如下(示例):

 uint16_t bch_code(uint16_t data){uint8_t i = 0;uint16_t BCH = 0;uint16_t poly =(0x3<<7);// g = x^4 + x + 1uint16_t code = 0;BCH = (data & 0x07ff);for (i=0;i<11;i++){ if ((BCH & 0x0400) == 0x0400){BCH = (BCH<<1) ^ poly;}else{BCH = BCH<<1;}}code = (data & 0x07ff)<<4;code|= ((BCH>>7) & 0xf);return code;}

poly就是对应的多项式系数左移之后的结果,这里左移7位是为了和信息位对齐。


总结

本文初略介绍了BCH编码的C语言表述,如有不对,还请指教。

BCH编码——c语言代码相关推荐

  1. 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?

    ​在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构 ...

  2. 怎么解c语言逆向编码,逆向还原C语言代码 练习1

    找了个C语言100列 用来练习OD还原C语言代码 至于C+的 以后也会写 我们先来看第一个程序,我们先分析Debug的 Debug为了方便调试,代码都是一对一的翻译 没做什么优化,还原起来比较好上手, ...

  3. bch verilog代码_基于FPGA的多进制BCH编码

    标签:编码(180)RS(99) 摘要:RS(Reed-Solomon)编码是一种具有较强纠错能力的多进制BCH编码,其既可纠正随机错误,又可纠正突发错误.RS编译码器广泛应用于通信和存储系统,为解决 ...

  4. 液晶显示屏的C语言编码,AMPIRE12864液晶C语言代码

    原标题:AMPIRE12864液晶C语言代码 #include #include #define uchar unsigned char #define uint unsigned int #defi ...

  5. 停车场编码C语言,停车场系统部分C语言代码

    停车场系统部分C语言代码 (2011-05-24 16:13:41) 标签: 车牌号 层号 停车场系统 位号 停车场管理 it #include #include #include struct Ga ...

  6. c语言编码2018新年快乐,c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天?...

    c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天? 关键字:c语言 更新时间:2018-11-12 04:50:55 136次访问 这个可以用C标准函数实现 #include ...

  7. ANSI编码和标准代码页(code page)

    电脑最先是美国人发明出来开始使用的,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母.数字和常用特殊符号已经绰绰有余了(其实ASCII只用了前127个编码)于是他们使用ASCII编码, ...

  8. 嵌入式C语言代码规范

    C语言代码规范 参考安富莱C语言编码规范 1.文件与目录 1.文件及目录的命名规定可用的字符集是[A-Z:a-z:0-9:._-]. 2.源文件名后缀用小写字母 .c 和.h. 3.文件的命名要准确清 ...

  9. .Net 编码以及与这些编码关联的代码页

    下表列出了受支持的编码以及与这些编码关联的代码页. 最后一列中的星号指示 .NET Framework 本身即支持该代码页,而不需考虑基础平台. http://msdn.microsoft.com/z ...

  10. 语言代码编程大赛简讯_精品干货:C语言的高效编程与代码优化

    在本篇文章中,我收集了很多经验和方法.应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码. 简介 在最近的一个项目中,我们需要开发一个运行在移动设备上但不保证图像高质量的轻量级 ...

最新文章

  1. Query理解在美团搜索中的应用
  2. 模型参数优化(二):粒子群优化
  3. Delphi多媒体设计之TMediaPlayer组件(一)
  4. nagios新添加服务有时显示,有时不显示问题解决
  5. GC回收垃圾对象过程
  6. 在线下划线转驼峰,驼峰转下划线工具
  7. 图像形态学运算之腐蚀-膨胀篇
  8. 给大楼装上转动外壳减少风力作用
  9. 很不错的在线Office控件:IWebOffice与SOAOffice
  10. Leetcode 惊现马化腾每天刷题?为啥大佬都这么努力!
  11. B. Frodo and pillows
  12. c# chart缩放,局部放大
  13. windows访问控制列表ACL
  14. 2023年跨年代码(新年祝福语生成器)
  15. 如果遇到提示错误 reactivity.esm-bundler.js?a1e9:337 Set operation on key “default“ failed: target is readonl
  16. 算法思想(持续更新...)
  17. 企业研发流程演进之路
  18. mysql表如何删除一条数据_mysql如何删除表中一行数据?
  19. 为什么要学网络爬虫?我来告诉你!
  20. 焦点与焦距 (focal point, focal length)

热门文章

  1. ARM中国区大学计划
  2. android壁纸服务,android壁纸服务流程浅析
  3. Kindeditor在线HTML富文本编辑器使用入门
  4. BiLSTM-CRF模型的流程
  5. matlab振荡环节相频特性,自动控制理论—典型环节的频率特性
  6. ISO27001LA国际信息安全管理主任审核员(IRCA)认证
  7. unity3d怎么让模型动起来_Unity动画系统详解1:在Unity中如何制作动画?
  8. IDEA 开启远程调试
  9. java坦克大战练习。java基础项目。巩固java基础部分。
  10. CRC算法(直接计算法和查表法)