chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CRC校驗(yàn)的計(jì)算過(guò)程

TopSemic嵌入式 ? 來(lái)源:TopSemic嵌入式 ? 作者:TopSemic嵌入式 ? 2022-07-15 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

據(jù)說(shuō)剛過(guò)去的高考數(shù)學(xué)很難,小編當(dāng)年上學(xué)時(shí)挺喜歡數(shù)學(xué)的,最近特意復(fù)習(xí)了一下CRC校驗(yàn)的計(jì)算過(guò)程。

CRC是眾多校驗(yàn)方式中的一種,校驗(yàn)的目的是為了檢測(cè)數(shù)據(jù)的正確性。在詳細(xì)介紹CRC計(jì)算之前,我們先來(lái)看兩個(gè)常見的較為簡(jiǎn)單點(diǎn)的校驗(yàn):串口通信中的奇偶校驗(yàn)和身份證號(hào)碼中的MOD 11-2校驗(yàn)。

先看奇偶校驗(yàn),假設(shè)要發(fā)送8位數(shù)據(jù)10110101,奇校驗(yàn)是再加一位校驗(yàn)位,讓這9位數(shù)據(jù)中的1的個(gè)數(shù)為奇數(shù)。

10110101->101101010 奇校驗(yàn)

偶校驗(yàn)是讓這9位數(shù)據(jù)中1的個(gè)數(shù)為偶數(shù)。

10110101->101101011 偶校驗(yàn)

接收方收到數(shù)據(jù)后計(jì)算其奇偶性,如果不對(duì),則說(shuō)明數(shù)據(jù)傳輸中發(fā)生了錯(cuò)誤。

奇偶校驗(yàn)優(yōu)點(diǎn)是使用簡(jiǎn)單,缺點(diǎn)是檢錯(cuò)率有限,只有奇數(shù)個(gè)數(shù)據(jù)位發(fā)生變化的錯(cuò)誤能檢測(cè)到,偶數(shù)個(gè)數(shù)據(jù)位變化的錯(cuò)誤它檢測(cè)不了。

最近拿著身份證去核酸檢測(cè)的次數(shù)太多了,讓我對(duì)身份證號(hào)碼的組成產(chǎn)生了興趣,尤其好奇的是為什么有的身份號(hào)號(hào)碼最后一位是X。身份證號(hào)碼總共18位,包括17位數(shù)字碼和1位校驗(yàn)碼。

1)1-6位是地址碼,表示編碼對(duì)象所在縣。

2)7-14位是出生日期碼,表示編碼對(duì)象出生的年、月、日。

3)15-17位是順序碼,表示在同一地址碼所標(biāo)識(shí)的區(qū)域范圍內(nèi),對(duì)同年、同月、同日出生的人編定的順序號(hào),順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性。

4)校驗(yàn)碼,用來(lái)檢驗(yàn)身份證號(hào)碼是否正確,采用MOD 11-2校驗(yàn)碼系統(tǒng)。

5917011e-0360-11ed-ba43-dac502259ad0.png

校驗(yàn)的公式如下:

592dbd00-0360-11ed-ba43-dac502259ad0.png

簡(jiǎn)單來(lái)說(shuō)它的校驗(yàn)規(guī)則是:連校驗(yàn)碼一起,由從右到左逐位乘以2的n次方取模11并求和,對(duì)11的余數(shù)必須為1。

以一個(gè)身份證號(hào)碼11010519491231002X為例,

5956ca42-0360-11ed-ba43-dac502259ad0.png

校驗(yàn)碼計(jì)算如下:

1) 將前面的身份證號(hào)碼17位數(shù)分別乘以不同的系數(shù)。從左到右的系數(shù)分別為:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

2) 將這17位數(shù)字和對(duì)應(yīng)的系數(shù)各自相乘的結(jié)果相加7+9+0+5+0+20+2+9+24+27+7+18+30+5+0+0+4=167;

3) 用加出來(lái)的和167除以11,余數(shù)是2;

4) 余數(shù)2對(duì)應(yīng)校驗(yàn)碼是X;

看完上述計(jì)算方法之后,大家可以用自己的身份證號(hào)碼試試。

該校驗(yàn)算法據(jù)說(shuō)可以:

1) 如果某一位填錯(cuò)了,則校驗(yàn)算法可以檢測(cè)出來(lái)。

2) 如果身份證號(hào)的相鄰2位填反了,則校驗(yàn)算法可以檢測(cè)出來(lái)。

這也是為什么要除以11而不是10的原因,其背后的數(shù)據(jù)理論推理已經(jīng)超出了我的能力范疇,這里不再介紹了。

上面的兩種校驗(yàn)和CRC校驗(yàn)沒(méi)有什么關(guān)系,只是為了讓大家對(duì)校驗(yàn)先有個(gè)感性的認(rèn)識(shí),下面來(lái)正式介紹CRC。

我在網(wǎng)上找了兩個(gè)計(jì)算CRC的軟件,輸入同樣的數(shù)據(jù),選擇同樣的算法,得到的結(jié)果一樣,

596866da-0360-11ed-ba43-dac502259ad0.png

59964730-0360-11ed-ba43-dac502259ad0.png

這兩個(gè)軟件的對(duì)應(yīng)關(guān)系如下:

59bf738a-0360-11ed-ba43-dac502259ad0.png

把CRC Calculator Info 中的這幾個(gè)參數(shù)弄明白,CRC的過(guò)程你也就清楚了

Name:算法的名稱,比如對(duì)于16bit的CRC來(lái)說(shuō)就有好多個(gè)名字,也就是雖然都是16 bit CRC,但是計(jì)算方式也有好多種。

59e31ace-0360-11ed-ba43-dac502259ad0.png

Width:指的CRC校驗(yàn)值的長(zhǎng)度,通常有8bit,16bit,24bit,32bit等。

Poly:是多項(xiàng)式的值,以上面圖中的CRC-8:x8+x2+x+1為例,它表示二進(jìn)制為100000111,去掉最高位的1,十六進(jìn)制表示就是0x07

Init: Init 的位數(shù)和Poly的位數(shù)相同,它的值為全0或者全F,當(dāng)全為0時(shí),在算法開始前對(duì)數(shù)據(jù)(這個(gè)數(shù)據(jù)是根據(jù)RefIn的值得到的)后面補(bǔ)上CRC位數(shù)個(gè)0后就可以進(jìn)行后續(xù)計(jì)算了。當(dāng)全為1時(shí),表示在算法開始前對(duì)數(shù)據(jù)的前CRC位數(shù)(高位)先和對(duì)應(yīng)位數(shù)個(gè)1進(jìn)行異或(即:前CRC位數(shù)的值按位取反),再在后面補(bǔ)上CRC位數(shù)個(gè)0,才進(jìn)行后續(xù)計(jì)算。

RefIn和Refout:它們要么全為False,要么全為True。

RefIn為False表示,輸入的原始數(shù)據(jù)的每個(gè)字節(jié)的第7位作為最高有效位,第0位作為最低有效位,即正常計(jì)算即可

當(dāng)RefIn為True時(shí),輸入的原始數(shù)據(jù)的每個(gè)字節(jié)需要做個(gè)逆序的處理,注意:針對(duì)的每個(gè)字節(jié),而不是整個(gè)數(shù)據(jù),以一個(gè)4字節(jié)的原始數(shù)據(jù)為例:

5a213ee4-0360-11ed-ba43-dac502259ad0.png

當(dāng)Refout為False時(shí),輸出不做處理,當(dāng)Refout為True,需要對(duì)輸出數(shù)據(jù)做一次整個(gè)數(shù)據(jù)的逆序處理,注意:這里做的逆序和RefIn不同,它不是按字節(jié)逆序,而是整個(gè)逆序,以CRC-32為例來(lái)說(shuō)明,最后的數(shù)據(jù)為32位,當(dāng)Refout為True時(shí),翻轉(zhuǎn)如下:

5a4137b2-0360-11ed-ba43-dac502259ad0.png

XorOut:表示根據(jù)上面參數(shù)計(jì)算完后,和這個(gè)數(shù)再進(jìn)行一次異或。

下面分析一下上面的結(jié)果0x79的由來(lái):

1) 0x13 對(duì)應(yīng)二進(jìn)制為00010011

2)由于RefIn為False,所以0x13不做處理還是00010011

3) 因?yàn)镮nit為0x00,00010011后面加8個(gè)0即可,輸入數(shù)據(jù)變?yōu)?001001100000000

4) 多項(xiàng)式為x8+x2+x+1 對(duì)應(yīng)二進(jìn)制100000111,將上述0001001100000000 除以該多項(xiàng)式對(duì)應(yīng)的100000111

整個(gè)計(jì)算過(guò)程如下:

5a4d1546-0360-11ed-ba43-dac502259ad0.png

最后得到余數(shù):01111001

5) 由于RefOuT為False,所以余數(shù)不變,還為01111001

6) 由于Xorout為0,表示不用再取反,所以最終的結(jié)果就是01111001,即十六進(jìn)制0x79

算一個(gè)不過(guò)癮,我們?cè)賮?lái)計(jì)算一個(gè)

5a5dd430-0360-11ed-ba43-dac502259ad0.png

這一次和上面唯一的不同是將初始值由原來(lái)的0x00換為了0xFF,這個(gè)例子就是給大家演示初始值到底什么意思.

下面分析一下上面的結(jié)果0x79的由來(lái):

1) 0x13 對(duì)應(yīng)二進(jìn)制為00010011

2) 由于RefIn為False,所以0x13不做處理還是00010011

3) 因?yàn)镮nit為0xFF,00010011的高8位要先與0xFF異或,輸入數(shù)據(jù)變?yōu)?1101100,后面再加入8個(gè)0,變?yōu)?1110110000000000

4) 多項(xiàng)式為x8+x2+x+1 對(duì)應(yīng)二進(jìn)制100000111,將上述1110110000000000 除以該多項(xiàng)式對(duì)應(yīng)的100000111,最后得到余數(shù):10001010

5) 由于RefOuT為False,所以余數(shù)不變,還為10001010

6) 由于Xorout為0,表示不用再取反,所以最終的結(jié)果就是10001010,即十六進(jìn)制0x8A

這個(gè)例子演示了初始值的含義,我們?cè)倏醋詈笠粋€(gè)例子,這個(gè)例子演示了RefIn和RefOut為True的具體含義

5a70e9e4-0360-11ed-ba43-dac502259ad0.png

1) 0x13 對(duì)應(yīng)二進(jìn)制為00010011

2) 由于RefIn為True,所以0x13需要逆序一下得到11001000

3) 因?yàn)镮nit為0x00,所以11001000后面直接添加4個(gè)0即可,得到110010000000

4) 多項(xiàng)式為x4+x+1 對(duì)應(yīng)二進(jìn)制10011,將上述110010000000 除以10011,最后得到余數(shù):0010

5) 由于RefOuT為True,所以余數(shù)要逆序變?yōu)?100

6) 由于Xorout為0,表示不用再取反,所以最終的結(jié)果就是0100

CRC每種參數(shù)模型的檢錯(cuò)能力,同時(shí)CRC也可以糾錯(cuò),這需要專業(yè)的數(shù)學(xué)計(jì)算,這也超出了我的能力,這里也不介紹了。

看完這些大家應(yīng)該都清楚了CRC的計(jì)算,有些 MCU本身集成了硬件CRC模塊,你只需要配置寄存器,就可以算出CRC結(jié)果了,或者也可以通過(guò)軟件來(lái)實(shí)現(xiàn),https://github.com/whik/crc-lib-c 有一個(gè)開源的代碼可以用。不管哪種方法,了解下詳細(xì)的計(jì)算過(guò)程還是有好處的。

CRC計(jì)算軟件和github 軟件代碼下載如下:

https://cowtransfer.com/s/05d6adadea654c 或 打開【奶牛快傳】cowtransfer.com 使用傳輸口令:diz36q 提取

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • crc
    crc
    +關(guān)注

    關(guān)注

    0

    文章

    205

    瀏覽量

    30605
  • 計(jì)算
    +關(guān)注

    關(guān)注

    2

    文章

    457

    瀏覽量

    39826
  • 校驗(yàn)
    +關(guān)注

    關(guān)注

    0

    文章

    44

    瀏覽量

    12943

原文標(biāo)題:CRC校驗(yàn)怎么算?

文章出處:【微信號(hào):TopSemic,微信公眾號(hào):TopSemic嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CRC校驗(yàn)的本質(zhì)和物理意義

    工業(yè)控制系統(tǒng)中,Modbus RTU協(xié)議的CRC校驗(yàn)如同通信網(wǎng)絡(luò)的\"免疫系統(tǒng)\",某石化廠DCS系統(tǒng)曾因CRC計(jì)算錯(cuò)誤導(dǎo)致0.3%的數(shù)據(jù)包丟失,引發(fā)連鎖控制故障。 一、
    發(fā)表于 11-13 07:58

    關(guān)于CRC校驗(yàn)的問(wèn)題,求解答

    ,uint16_t Len )//指針指向的數(shù)據(jù)順序影響校驗(yàn)結(jié)果,{//此計(jì)算過(guò)程計(jì)算指針指向的最低字節(jié)uint16_t CRC_Reg;uint8_t num;uint8_t Da
    發(fā)表于 04-06 17:33

    CC1310的CRC校驗(yàn)計(jì)算的問(wèn)題,請(qǐng)問(wèn)能否在Tx端計(jì)算CRC的值然后放在數(shù)據(jù)包的末尾當(dāng)成CRC校驗(yàn)的字節(jié)?

    CRC校驗(yàn)的)Tx:CC115L、CC1310或其他,關(guān)閉CRC計(jì)算,給接收端發(fā)送一個(gè)數(shù)據(jù)包。一般結(jié)果:接收端顯示CRC
    發(fā)表于 06-06 00:49

    CRC-16/Modbus校驗(yàn)計(jì)算

    CRC-16/Modbus校驗(yàn)計(jì)算輸入進(jìn)制字符串,輸出校驗(yàn)計(jì)算
    發(fā)表于 09-11 14:44

    40位以內(nèi)任意長(zhǎng)度的CRC計(jì)算校驗(yàn)的實(shí)現(xiàn)

    論述了40位以內(nèi)任意長(zhǎng)度的CRC計(jì)算校驗(yàn)在TMS320C5000系列DSP中的實(shí)現(xiàn)方法。運(yùn)用該方法能實(shí)現(xiàn)任意信息長(zhǎng)度的40位以內(nèi)任意CRC碼的計(jì)算
    發(fā)表于 05-05 20:31 ?2148次閱讀
    40位以內(nèi)任意長(zhǎng)度的<b class='flag-5'>CRC</b><b class='flag-5'>計(jì)算</b>及<b class='flag-5'>校驗(yàn)</b>的實(shí)現(xiàn)

    CRC標(biāo)準(zhǔn)及計(jì)算過(guò)程

      標(biāo)準(zhǔn)   根據(jù)應(yīng)用環(huán)境與習(xí)慣的不同,CRC又可分為以下幾種標(biāo)準(zhǔn):  ?、?b class='flag-5'>CRC-12碼;  ?、?b class='flag-5'>CRC-16碼;  ?、?b class='flag-5'>CRC-CCITT碼;   ④
    發(fā)表于 08-13 11:17 ?3190次閱讀

    crc校驗(yàn)基本原理

    本內(nèi)容介紹了crc校驗(yàn)基本原理,CRC幾個(gè)基本概念,CRC碼的生成步驟.CRC即循環(huán)冗余校驗(yàn)碼(
    發(fā)表于 12-21 16:55 ?6141次閱讀

    crc校驗(yàn)原理_怎樣修復(fù)crc校驗(yàn)錯(cuò)誤

    crc校驗(yàn)原理 利用CRC進(jìn)行檢錯(cuò)的過(guò)程可簡(jiǎn)單描述為:在發(fā)送端根據(jù)要傳送的k位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的r位監(jiān)督碼(
    發(fā)表于 09-05 09:26 ?3.6w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>校驗(yàn)</b>原理_怎樣修復(fù)<b class='flag-5'>crc</b><b class='flag-5'>校驗(yàn)</b>錯(cuò)誤

    crc校驗(yàn)錯(cuò)誤_crc校驗(yàn)錯(cuò)誤怎么解決

    CRC即循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check[1] ):是數(shù)據(jù)通信領(lǐng)域中最常用的一種查錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。循環(huán)冗余檢查(
    發(fā)表于 12-05 15:34 ?4.9w次閱讀
    <b class='flag-5'>crc</b><b class='flag-5'>校驗(yàn)</b>錯(cuò)誤_<b class='flag-5'>crc</b><b class='flag-5'>校驗(yàn)</b>錯(cuò)誤怎么解決

    CRC計(jì)算工具CRC校驗(yàn)計(jì)算器應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是CRC計(jì)算工具CRC校驗(yàn)計(jì)算器應(yīng)用程序免費(fèi)下載。
    發(fā)表于 07-01 08:00 ?139次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>計(jì)算</b>工具<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)</b>碼<b class='flag-5'>計(jì)算</b>器應(yīng)用程序免費(fèi)下載

    CRC校驗(yàn) 、STM32中CRC計(jì)算單元、 CRC應(yīng)用

    CRC校驗(yàn)、STM32中CRC計(jì)算單元、CRC應(yīng)用
    的頭像 發(fā)表于 03-04 13:54 ?7169次閱讀

    CRC校驗(yàn)碼并行計(jì)算的FPGA實(shí)現(xiàn)

    用軟件實(shí)現(xiàn) CRC 校驗(yàn)計(jì)算很難滿足高速數(shù)據(jù)通信的要求 ,基于硬件的實(shí)現(xiàn)方法中 ,有串行經(jīng)典算法 LFSR 電路 以及由軟件算法推導(dǎo)出來(lái)的其它各種并行計(jì)算方法。以經(jīng)典的LFSR 電路
    發(fā)表于 03-28 09:34 ?30次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)</b>碼并行<b class='flag-5'>計(jì)算</b>的FPGA實(shí)現(xiàn)

    CRC校驗(yàn)原理及實(shí)現(xiàn)

    作者:王超首發(fā):電子電路開發(fā)學(xué)習(xí)目錄前言CRC算法簡(jiǎn)介CRC計(jì)算CRC校驗(yàn)CRC
    發(fā)表于 01-26 17:37 ?30次下載
    <b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)</b>原理及實(shí)現(xiàn)

    CRC循環(huán)冗余校驗(yàn)簡(jiǎn)介

    CRC 是Cyclic Redundancy Check的縮寫,循環(huán)冗余校驗(yàn),用于校驗(yàn)數(shù)據(jù)傳輸?shù)耐暾?。一般情況下在數(shù)據(jù)發(fā)送前計(jì)算CRC
    的頭像 發(fā)表于 04-24 13:04 ?9116次閱讀
    <b class='flag-5'>CRC</b>循環(huán)冗余<b class='flag-5'>校驗(yàn)</b>簡(jiǎn)介

    工控常用LRC XOR累加和CRC校驗(yàn)工具校驗(yàn)碼自動(dòng)生成軟件多計(jì)算方式

    CRC校驗(yàn)工具 校驗(yàn)碼自動(dòng)生成軟件支持十幾種CRC計(jì)算方式,包括MODBUS協(xié)議的CRC-16
    的頭像 發(fā)表于 11-25 14:27 ?5277次閱讀
    工控常用LRC XOR累加和<b class='flag-5'>CRC</b><b class='flag-5'>校驗(yàn)</b>工具<b class='flag-5'>校驗(yàn)</b>碼自動(dòng)生成軟件多<b class='flag-5'>計(jì)算</b>方式