- 浏览: 279734 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (161)
- 【**计划】 (2)
- 【**Core Java**】 (30)
- 【**JAVA EE】 (6)
- JDBC (3)
- Hibernate专题系列 (0)
- 【**OS】 (14)
- 【**架构设计/设计模式】 (11)
- 【Hadoop】 (3)
- 【**分布式】 (9)
- 模板 (1)
- C (2)
- 常用工具 (1)
- Oracle (2)
- 【Tips】 (3)
- 【数据库】 (2)
- 玩转Ubuntu (0)
- 【计算机网络/网络编程】 (7)
- 【**Search Engine】 (21)
- 【**专题**】 (6)
- 【**Python】 (10)
- XML (1)
- 【**Open Source Framework】 (1)
- 【高级主题】 (1)
- 【存储】 (3)
- 【笔试面试】 (2)
- 【**数据结构与算法设计】 (20)
- 【其他】 (3)
- 【编程练习】 (2)
- 【待完成】 (12)
- 【工作】 (6)
- 【软件研发】 (4)
- 【**多线程多进程编程】 (5)
- 【Web Service】 (1)
- 【表达式解析/JavaCC系列】 (5)
- 【缓存系统:Memcached】 (1)
- 【Java IO/NIO】 (5)
- 【JVM运行机制及内存管理】 (7)
最新评论
-
107x:
...
python list排序 -
yuzhu223:
...
【Python基础】Python的lambda函数与排序 -
Tonyguxu:
分析查询结果的打分小于11.query=1065800715* ...
lucene打分机制的研究 -
Tonyguxu:
query=139320661963.013709 = (MA ...
lucene打分机制的研究 -
Tonyguxu:
query=10658007150.6772446 = (MA ...
lucene打分机制的研究
http://www.360doc.com/content/10/0408/22/1102209_22179091.shtml
循环校验码(CRC码):
是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
生成CRC码的基本原理:
任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。
3、CRC码集选择的原则:若设码字长度为N,信息字段为K位,校验字段为R位(N=K+R),则对于CRC码集中的任一码字,存在且仅存在一个R次多项式g(x),使得
V(x)=A(x)g(x)=xRm(x)+r(x);
其中: m(x)为K次信息多项式, r(x)为R-1次校验多项式,
g(x)称为生成多项式:
g(x)=g0+g1x+ g2x2+...+g(R-1)x(R-1)+gRxR
发送方通过指定的g(x)产生CRC码字,接收方则通过该g(x)来验证收到的CRC码字。
标准CRC生成多项式如下表:
名称 生成多项式 简记式* 标准引用
CRC-4 x4+x+1 3 ITU G.704
CRC-8 x8+x5+x4+1 0x31
CRC-8 x8+x2+x1+1 0x07
CRC-8 x8+x6+x4+x3+x2+x1 0x5E
CRC-12 x12+x11+x3+x+1 80F
CRC-16 x16+x15+x2+1 8005 IBM SDLC
CRC16-CCITT x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS
CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS
CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 SCTP
基本算法(人工笔算):
以CRC16-CCITT为例进行说明,CRC校验码为16位,生成多项式17位。假如数据流为4字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0];
数据流左移16位,相当于扩大256×256倍,再除以生成多项式0x11021,做不借位的除法运算(相当于按位异或),所得的余数就是CRC校验码。
发送时的数据流为6字节:BYTE[3]、BYTE[2]、BYTE[1]、BYTE[0]、CRC[1]、CRC[0];
举例:
信息字段代码为: m(x)=x6+x4+x3+1 代码为:1011001
生成多项式: g(x)=x4+x3+1 代码为:11001
m(x)x4=x10+x8+x7+x4 对应的代码记为:10110010000 即 左移4位
m(x)x4 在与 g(x)进行 模2的除法运算,相当于按位异或,计算过程如下:
1 0 1 1 0 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 1 1 1 1 0 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 0 1 1 1 1 0 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 1 1 0 0 0
1 1 0 0 1
-----------------------------
0 0 1 0 1 0 --------------> 余数 即 校验码
发送数据码为: 10110011010
发表评论
-
LRU算法介绍
2012-06-05 22:30 3757问题背景 在操作系统的内存管理里,如何节省有限的内存并为尽可 ... -
数据结构之位图bitmap
2012-05-10 23:12 0http://dongxicheng.org/structur ... -
常见数据结构与算法汇总
2012-05-10 23:01 11121、常见数据结构 线性:数组,链表,队列, ... -
数据结构之位图
2012-05-10 18:34 5667介绍 (20120511)位图就是通过将数组下标与应用中 ... -
map3搜索与存储的一道面试题
2012-05-10 15:10 930假设一个mp3搜索引擎收录了2^24首歌曲,并记录了可收听这些 ... -
字符串匹配算法——Edit distance
2012-05-09 11:20 2556如何比较两个字符串之间的相似程度(或者差异)? 想要比较 ... -
排序算法
2012-04-21 23:06 699插入排序 shell排序 ... -
【编程珠矶】开篇 千万号码的排序问题
2012-04-21 12:52 945注:学习了《编程珠矶》第一章,将涉及的一些知识点整理如下 ... -
WXXR LRUList的实现
2012-03-01 16:01 779LRUList -
【专题】分治递归+排序算法
2012-03-01 11:47 743123 -
【排序】merge排序
2012-02-28 09:59 905前言 主要学习 http://en.wikipedia.or ... -
【排序】快速排序
2012-02-27 18:40 944前言 快速排序(Quick Sort)算法是 “递归+分治” ... -
算法类博客推荐
2012-02-24 18:17 6571. http://blog.csdn.net/v_J ... -
递归与分治
2012-02-24 18:16 1010分治与递归基本思想 分治:分治强调“分 ... -
Apache LRUMap实现
2012-02-23 13:10 1127源码是 org.apache.commons.collect ... -
WXXR LRUMap的实现
2012-02-22 18:33 1890前言 实现LRU算法,注意观察者模式、并发(读写锁、线程池) ... -
【专题】LRU
2012-02-22 16:21 1534包含如下内容: 一. LRU算法 ht ... -
LRU理论
2012-02-21 18:46 10421.LRU算法介绍 LRU是Least Rec ... -
【排序算法】冒泡排序(bubble sort)
2012-02-19 12:16 0问题描述 将一组乱序的整形按照由小到大排序 算法思路 经 ... -
【Core Java】并发集合
2012-02-02 17:05 1143并发容器与同步容器 ...
相关推荐
本文将深入探讨CRC循环校验码的原理、VHDL实现以及相关知识点。 CRC循环校验码的工作原理是基于多项式除法,其目标是在数据传输或存储过程中检测出错误。在发送数据时,发送方会在原始数据后面附加一个根据特定CRC...
以下是对CRC循环冗余校验码及其MATLAB实现的详细解释: 1. **CRC原理**:CRC的基本思想是通过将数据看作一个二进制多项式,然后与一个预定义的生成多项式进行模2除法。生成多项式的最高位通常为1,且其长度决定了...
### CRC循环校验码在C语言中的实现 CRC(Cyclic Redundancy Check)是一种用于检测数字通信过程中数据错误的方法,常应用于数据传输系统中,如网络通信、磁盘存储等场景。CRC通过生成一个固定长度的校验值来检测...
压缩包内的文件名"CRC循环校验具体算法.txt"可能包含了CRC算法的详细步骤、公式或者C语言的源代码实现。另一文件"www.pudn.com.txt"可能是从网站www.pudn.com下载的相关资料或介绍,可能包含更多关于CRC校验的背景...
CRC循环校验码详解
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据传输和存储中的错误检测技术。它通过在数据后面附加一个校验码来确保数据的完整性。在VC++环境中,我们可以利用编程实现CRC校验。接下来,我们将...
总结一下,CRC循环冗余校验是一种有效的错误检测方法,主要应用于数据通信和存储领域。在C++中实现CRC涉及对生成多项式的选择、CRC寄存器的操作以及位级计算。通过测试用例验证CRC计算代码的准确性是必要的。
综上所述,CRC循环冗余校验是确保数据完整性的关键手段,在C#中可以通过编程实现。结合ModBus协议,CRC能够帮助我们检测并防止在数据传输过程中可能出现的错误,从而保证了系统的稳定性和可靠性。通过分析和研究提供...
CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛用于数据通信和存储中的错误检测技术。它通过在数据后面附加一个校验码来确保数据的完整性,主要用于检查数据传输或存储过程中可能出现的错误。16位的CRC...
### CRC循环冗余校验详解 #### 一、CRC循环冗余校验基本概念 CRC(Cyclic Redundancy Check)循环冗余校验是一种广泛应用于数据通信中的差错控制方法,用于检测数字信号在传输过程中的错误。CRC通过在原始数据上附加...
CRC校验计算速度快,检错能力强,易于用编码器等硬件电路实现。从检错的正确率与速度、成本等方面,都比奇偶校验等校验方式具有优势。因而,CRC 成为计算机信息通信领域最为普遍的校验方式。常见应用有以太网/USB...
CRC16(Cyclic Redundancy Check 16)是一种循环冗余校验算法,广泛应用于数据传输和存储中,用于检测数据传输中的错误。 在本文中,我们将使用C#语言实现CRC16校验算法,并将其应用于串口通信中。我们将首先介绍...
### C# CRC32校验知识点详解 #### 一、CRC32简介 CRC(Cyclic Redundancy Check)是一种广泛应用于数据传输过程中的错误检测技术。它通过一个多项式来计算一个固定长度的校验码,从而检测数据在传输过程中是否发生...
CRC16校验计算器是一种用于数据完整性检查的工具,它基于CRC(循环冗余校验)算法,广泛应用于通信、存储等领域。CRC16能够检测出传输或存储数据中的单比特或多比特错误,确保数据在传输过程中的准确无误。 在C# ...
C# CRC 循环冗余校验算法,包含8位 16位 32位 三种校验算法。 本例直接简单易懂,通过点击按钮直接 产生字符串“ABCD”的CRC32校验码“DB1720A5”,并将校验码显示在下面的文本框中。
它的全称为Cyclic Redundancy Check,即循环冗余校验。CRC的基本原理是通过一个预先定义的多项式,对数据进行除法运算,然后将得到的余数作为校验码添加到原始数据后面。在接收端,同样的算法会再次对数据(包括原始...
循环冗余校验(CRC,Cyclic Redundancy Check)是一种广泛用于数据传输错误检测的校验技术。在计算机网络通信中,为了确保数据的准确传输,通常会使用CRC算法来检验数据的完整性。CRC通过附加一个校验码到原始数据中...
CRC,全称是Cyclic Redundancy Check(循环冗余校验),它通过计算数据的校验码来判断数据在传输或存储过程中是否发生错误。CRC32是其中的一种,它使用32位的校验码。 CRC32的工作原理基于多项式除法。在CRC计算中...
CRC16(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储中的错误检测方法,通过计算数据的校验和来检测数据传输或存储过程中可能发生的错误。 CRC16校验的基本原理是利用多项式除法,通过...
CRC16,全称为Cyclic Redundancy Check(循环冗余校验),是一种广泛用于数据传输和存储中的错误检测机制。在串口通讯中,CRC校验码的计算至关重要,因为它能有效地检测出数据在传输过程中可能出现的错误,确保信息...