文档章节

计算机体系结构(三)——循环冗余校验

白志华
 白志华
发布于 2015/10/18 10:57
字数 638
阅读 8
收藏 0
    在校验码体系中,有各种校验的方法:有奇偶校验、海明码校验、循环冗余校验。今天就跟大家共同探讨一下常用的循环冗余校验吧。

    循环冗余校验(CRC,Cyclic Redundancy Check),是最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。已经被广泛应用于网络通信即磁盘存储。

    多项式:一个二进制数可以用一个多项式来表示,如1011 表示为 x 3+x 1+x 。最高次幂n,可以转为长度为n+1的二进制数。

    CRC编码组成:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。

    生成多项式:编码方程除以信息码的多项式,得到余数多项式即为校验码,解码方程将接收到的信息除以生成多项式,若余数=0,则说明正确,反则,则传输出错,余数的大小即为错误位置。

    校验码的具体生成过程为:
        ①假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*2的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。
        ②移位后的信息 除以 生成多项式G(x)得到的余数多项式,可转为R位二进制。
        ③将余数嵌入到原信息的后面。
例如:信息位为10100110 , 生成多项式为a(x)= x 5+x 4+x+1
    则C(x)=a(x)* x 5 = (x 7+x 5+x 2+x)* x  =  x 12+  x 10 +x 7+x 6

 

    余数为x 4+x ,转为二进制为11000,所以CRC码为10100110110000 。

以上方法是用多项式来解的,现在我们换用二进制方式来试试。
    信息位为10100110 , 生成多项式为a(x)= x 5+x 4+x+1。
    则a(x)转换为二进制为110011,信息位左移 R位(即最高次幂+1=6位),即在信息为后补5个0 ,得10100110000000,再除以a(x)转换的110011,取R位余数,即6位。然后将余数嵌入到原信息的后面 。看图:

 
余数为110000,6位,正好,补充到信息位的后面为:10100110110000,跟上面的方法结果一致。
   

版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/xiaoxian8023/article/details/7417547

共有 人打赏支持
白志华
粉丝 29
博文 265
码字总数 57524
作品 0
长沙
程序员
[现代编译原理C语言描述].(美国)Andrew.W.Appel.清晰版.pdf

【下载地址】 《现代编译原理:C语言描述》全面讲述了现代编译器的结构、编译算法和实现方法,是Andrew w.Apple的“虎书”——Modern Compiler Implementation——“红、蓝、绿”三序列之一。...

winter730
08/30
0
0
计算机网络基本概述

计算机网络基本概述一、 计算机网络硬件软件:实现资源共享、信息传递 二、 计算机网络的功能数据通信、资源共享、增加数据可靠性、提高系统处理能力 三、网络协议与标准1、协议:一组控制数...

王浩hh
01/01
0
0
【网络原理】第四章 数据链路层(二)

二、数据链路层的重要功能 (一)划分帧的边界(帧同步) ·方法一:字符计数法(面向字符) 在帧头用一个计数字段来表示整个帧中字符(包括自己)的个数。 工作方式:接收方接收到的第一个字...

xuan97916
2017/03/27
0
0
OSI七层模型基础知识及各层常见应用

OSI七层模型基础知识及各层常见应用 OSI Open Source Initiative(简称OSI,有译作开放源代码促进会、开放原始码组织)是一个旨在推动开源软件发展的非盈利组织。OSI参考模型(OSI/RM)的全称...

水中月120
2013/11/29
0
0
服务器数据恢复案例 / raid5阵列多块硬盘离线处理方法

服务器数据恢复案例一: 某研究院 DELL服务器 磁盘阵列崩溃,内置15块1TB硬盘搭建的RAID5阵列。一开始有一块硬盘离线,在更换新硬盘进行同步的过程中,第二块磁盘指示灯报警,同步失败,阵列...

宋国建
07/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
2
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0
redis 系列一 -- 简介及安装

1.简介 redis -- remote dictionary server 远程字典服务 使用 C 语言编写; 高性能的 key-value数据库; 内存数据库,支持数据持久化。 Redis 是一个开源(BSD许可)的,内存中的数据结构存...

imbiao
今天
4
0
nginx log记录请求响应时间

有时为了方便分析接口性能等,需要记录请求的时长,通过修改nginx的日志格式可以做到,如 添加一个新的log_format log_format timed_combined '$remote_addr - $remote_user [$time_local] "...

swingcoder
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部