BCH编码——c语言代码
文章目录
- 前言
- 一、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语言代码相关推荐
- 南邮哈夫曼编码c语言代码_漫画:“哈夫曼编码” 是什么鬼?
在上一期,我们介绍了一种特殊的数据结构 "哈夫曼树",也被称为最优二叉树.没看过的小伙伴可以点击下方链接: 漫画:什么是 "哈夫曼树" ? 那么,这种数据结构 ...
- 怎么解c语言逆向编码,逆向还原C语言代码 练习1
找了个C语言100列 用来练习OD还原C语言代码 至于C+的 以后也会写 我们先来看第一个程序,我们先分析Debug的 Debug为了方便调试,代码都是一对一的翻译 没做什么优化,还原起来比较好上手, ...
- bch verilog代码_基于FPGA的多进制BCH编码
标签:编码(180)RS(99) 摘要:RS(Reed-Solomon)编码是一种具有较强纠错能力的多进制BCH编码,其既可纠正随机错误,又可纠正突发错误.RS编译码器广泛应用于通信和存储系统,为解决 ...
- 液晶显示屏的C语言编码,AMPIRE12864液晶C语言代码
原标题:AMPIRE12864液晶C语言代码 #include #include #define uchar unsigned char #define uint unsigned int #defi ...
- 停车场编码C语言,停车场系统部分C语言代码
停车场系统部分C语言代码 (2011-05-24 16:13:41) 标签: 车牌号 层号 停车场系统 位号 停车场管理 it #include #include #include struct Ga ...
- c语言编码2018新年快乐,c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天?...
c语言代码,输入年月日计算离2018年春节(2019年2月5日)还有多少天? 关键字:c语言 更新时间:2018-11-12 04:50:55 136次访问 这个可以用C标准函数实现 #include ...
- ANSI编码和标准代码页(code page)
电脑最先是美国人发明出来开始使用的,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母.数字和常用特殊符号已经绰绰有余了(其实ASCII只用了前127个编码)于是他们使用ASCII编码, ...
- 嵌入式C语言代码规范
C语言代码规范 参考安富莱C语言编码规范 1.文件与目录 1.文件及目录的命名规定可用的字符集是[A-Z:a-z:0-9:._-]. 2.源文件名后缀用小写字母 .c 和.h. 3.文件的命名要准确清 ...
- .Net 编码以及与这些编码关联的代码页
下表列出了受支持的编码以及与这些编码关联的代码页. 最后一列中的星号指示 .NET Framework 本身即支持该代码页,而不需考虑基础平台. http://msdn.microsoft.com/z ...
- 语言代码编程大赛简讯_精品干货:C语言的高效编程与代码优化
在本篇文章中,我收集了很多经验和方法.应用这些经验和方法,可以帮助我们从执行速度和内存使用等方面来优化C语言代码. 简介 在最近的一个项目中,我们需要开发一个运行在移动设备上但不保证图像高质量的轻量级 ...
最新文章
- Query理解在美团搜索中的应用
- 模型参数优化(二):粒子群优化
- Delphi多媒体设计之TMediaPlayer组件(一)
- nagios新添加服务有时显示,有时不显示问题解决
- GC回收垃圾对象过程
- 在线下划线转驼峰,驼峰转下划线工具
- 图像形态学运算之腐蚀-膨胀篇
- 给大楼装上转动外壳减少风力作用
- 很不错的在线Office控件:IWebOffice与SOAOffice
- Leetcode 惊现马化腾每天刷题?为啥大佬都这么努力!
- B. Frodo and pillows
- c# chart缩放,局部放大
- windows访问控制列表ACL
- 2023年跨年代码(新年祝福语生成器)
- 如果遇到提示错误 reactivity.esm-bundler.js?a1e9:337 Set operation on key “default“ failed: target is readonl
- 算法思想(持续更新...)
- 企业研发流程演进之路
- mysql表如何删除一条数据_mysql如何删除表中一行数据?
- 为什么要学网络爬虫?我来告诉你!
- 焦点与焦距 (focal point, focal length)