日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

BCH编码——c语言代码

發(fā)布時(shí)間:2024/8/1 编程问答 111 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BCH编码——c语言代码 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、BCH碼是什么?
  • 二、BCH編碼
    • 1.原理
  • 總結(jié)


前言

主要講述BCH碼如何用c語(yǔ)言寫出來(lái)

一、BCH碼是什么?

BCH碼是一類重要的糾錯(cuò)碼,它把信源待發(fā)的信息序列按固定的κ位一組劃分成消息組,再將每一消息組獨(dú)立變換成長(zhǎng)為n(n>κ)的二進(jìn)制數(shù)字組,稱為碼字。如果消息組的數(shù)目為M(顯然M>=2),由此所獲得的M個(gè)碼字的全體便稱為碼長(zhǎng)為n、信息數(shù)目為M的分組碼,記為n,M。把消息組變換成碼字的過(guò)程稱為編碼,其逆過(guò)程稱為譯碼。 比如有60bit數(shù)據(jù),我每11bit為一組進(jìn)行BCH編碼(n=11),然后進(jìn)行BCH編碼,得到4位校驗(yàn)位,總位數(shù)就是M=15位。

二、BCH編碼

1.原理

將上述11bit稱為信息位,每次都是用信息位除以生成多項(xiàng)式對(duì)應(yīng)的數(shù)(比如生成多項(xiàng)式g(x)=x^4+x+1,則對(duì)應(yīng)10011,就是x的冪的系數(shù))
改進(jìn)BCH編碼算法,去掉生成多項(xiàng)式最高位,判斷信息位最高位是否為1,為1就左移并異或生成多項(xiàng)式,如果信息位最高位不是1,則對(duì)信息位直接左移1位。
比如任意給一個(gè)11位信息位11100011101,10011是對(duì)應(yīng)生成多項(xiàng)式的系數(shù),這里去掉其最高位變?yōu)?011,按照上述算法,一共要循環(huán)11次,11位信息位的位數(shù)。得到最高位的4位1010就是校驗(yàn)位,原來(lái)的11位信息位加上4位校驗(yàn)位就得到BCH編碼后的數(shù)據(jù)包。

代碼如下(示例):

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就是對(duì)應(yīng)的多項(xiàng)式系數(shù)左移之后的結(jié)果,這里左移7位是為了和信息位對(duì)齊。


總結(jié)

本文初略介紹了BCH編碼的C語(yǔ)言表述,如有不對(duì),還請(qǐng)指教。

總結(jié)

以上是生活随笔為你收集整理的BCH编码——c语言代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。