1.3、校验码

news2024/11/14 16:23:31

校验码

  • 简介
    • 奇偶校验
      • 编码方法
      • 分类
      • 注意
      • 练习题
    • CRC循环冗余校验
      • 模2除法
        • 异或运算
        • 模2除法计算过程
      • 循环冗余校验CRC
      • 过程
      • 练习题
        • 选择题
    • 海明校验
      • 步骤
      • 练习题

简介

计算机在接收相应信息的时候,能够识别的都是一些电信号或者转化后的0 1二进制。那包括我们在网络上传递信息的时候,也是通过电信号或者光信号之类的来进行传递的。
大家想一想,电信号或者光信号在传输的过程当中,如果距离很远,会不会发生一些衰竭?有可能。所以我们在传递信息的时候,我必须要对信息做一些额外的处理,方便我们来检查这个信息是否正确。
那这种检查的信息,我们就把它叫做校验码。校验码我们一般会用到多种校验方式,在我们的软件设计师考试当中,一般涉及到的大概有三种。

  • 第一种比较简单,是奇偶校验,能检错,不能纠错。
  • 第二种CRC循环冗余校验,能检错,不能纠错–在考试当中出现较多。
  • 第三种是海明校验,既能检错也能纠错

这三种方式需要掌握他们之间的比对特点以及简单的CRC循环冗余校验的计算过程或者说是编码过程。

对于校验码,它是在信息位以外来增加一些信息,或者说增加一些数据,帮助我们校验。比如说:如果你收到女朋友的一条消息,让你11月10日星期六陪她一起去看电影。但是我们检查之后会发现这个日期不对,11月10日是星期五。这个时候我们就有理由怀疑这个信息是不是有问题。那么我们一般称做这种即说明了约定日期11月10日,又补充说明了那天是星期六。这种冗余信息的形式来帮助我们进行校验,通常都是冗余信息组成的。接下来我们看一下校验具体的编码过程

奇偶校验

“1”的个数是奇数个还是偶数个

我们简单的举个例子:比如说我们在传递相应信息的时候,要标记出这条信息的状态。我们打个比方。这个状态如果是有效,那么我们就标记为1;如果是无效,那我们就标记为0。那么信息在发送之后,接收房接收到的数据是1。我们能认为这个一就一定是正确的,是有效的吗?不能,因为它在传输的过程中有可能会发生改变。有可能发送方发送的是0,但接收方接收的是1,在传输的过程中发生了变化。那这种情况就需要我们在这类信息之上来增加冗余信息来帮助我们做验证。
在这里插入图片描述

编码方法

奇偶校验码的编码方法是:
由若干位有效信息的头部成者尾部,再加上一个二进制位(校验位)组成校验码。

分类

  • 奇校验:整个校验码(有效信息位和校验位)中“1”的个数为奇数。
  • 偶校验:整个校验码(有效信息位和校验位)中“1”的个数为偶数。

比如说有一条待发送的信息是1011。我们要在它的后面增加一位校验位。
在这里插入图片描述

如果是奇校验,为了保证整个校验码当中“1”的个数是奇数个,那么我们在这个校验位上就要设置0。
如果是偶校验,我们要保证整个信息当中“1”的个数是偶数个,那么我们在这个校验位上就要设置1

注意

  • 如果有奇数个位发生误码,则奇偶性发生变化,可以恰查出误码,但不能纠错
  • 如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(也称漏检)

比如1011 。
在这里插入图片描述
如果在传输的过程中有一位发生变化,比如说中间的这个1变为了0。最后,接收方介绍的信息是1001,那么它的奇偶性发生了变化,这个时候就可以检查出这条信息有误码。
那么如果在传输的过程中有偶数个位发生错误,比如最后两位都变成了0,那么接收方接收到的信息就是1000。这个时我们接收方接收的信息的一是奇数个,发送方发送的信息一的个数也是奇数个,它的奇偶性没有发生变化,所以也就不能检查出来误码。

练习题

给出编码1001101的奇校验码和偶校验码()
A. 10011011,10011010
B. 10011011,10011011
C. 10011010,10011010
D. 10011010,10011010

答案:A

CRC循环冗余校验

模2除法

主要用在CRC循环冗余校验的求取校验码过程

异或运算

相同为0,不同为1
在这里插入图片描述

模2除法计算过程
  1. 被除数首位是几商就上几;
  2. 异或运算;
  3. 异或后首位一定是0,
    舍弃掉这个0首位:
  4. 补末位(落数),再上商。
    第3和第4位就是去首位补末位

例:10110010000模二除11001
在这里插入图片描述

循环冗余校验CRC

循环冗余校验码CRC也称CRC编码,它是通信领域当中最常见的一种差错校验码。可以检错不可以纠错。
循环冗余校验码CRC由两部分组成:

  • 左边是信息位也及时待发送的数据
  • 右边是基于待发送的数据和生成多项式逆转出来的差错校验码,称为冗余码

发送方在发送发送数据后,接收方通过生成多项式来计算收到的信息是否产生了误码。
循环冗余校验码,它的冗余码位数越多,那么它的校验能力也就越强。
在CRC冗余校验的编码中,会用到我们之前所学到的模2除法来进行编码。
在考试中,该内容主要出现在选择题当中,出题方式是计算校验码,分值1分左右

过程

  1. 收发双方约定好一个生成多项式G(x):
  2. 发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码)将其添加到待传输数据的后面一起传输;
  3. 接收方通过生成多项式来计算收到的数据是否产生了误码:

算法要求生成多项式必须包含最低次项
在这里插入图片描述

练习题

  1. 例:待发送的信息为101001,生成多项式为G(x)=x3+x2+1,计算编码后的信息。
    1. 构造被除数
      待发送信息后面添加生成多项式最高次数个0
      101001后面补3个0
    2. 构造除数
      生成多项式各项系数构成的比特串
      1101
    3. 做模二除法运算
    4. 检查余数
      余数的位数应与生成多项式最高次数相同,
      如果位数不够,则在余数前补0来凑足位数。

在这里插入图片描述
2. 例:接收到的信息为101101001,生成多项式为G(x)=x3+x2+1,判断传输是否有误码。
1. 构造被除数
接收到的信息就是被除数
2. 构造除数
生成多项式各项系数构成的比特串
3. 做模二除法运算
4. 检查余数
余数为0,传输过程无误码:
余数不为0,传输过程产生误码。

在这里插入图片描述
有误码

总结:CRC循环冗余校验码只能检测出针对传输过程中是否出现差错,但是它并不能定位错误,因此他无法纠正错误。也就是说CRC循环冗余校验码可以检错不能纠错,但是它的检测能力还是很强的,也就是漏检率非常低。虽然整个计算过程比较复杂,但是非常易于计算机的硬件实现。所以CRC循环冗余校验广泛应用于数据链路层

选择题

在()校验方法中,采用模2运算来构造校验位。(2019上半年试题)
A.水平奇偶
B.垂直奇偶
C.海明码
D.循环冗余

答案:D

海明校验

海明校验是一种利用奇偶性来检测和纠错的编码方法。我们传输数据的时候或者存储数据的时候可能会发生传输错误或者数据损坏。海明校验就是通过在数据中增加有余位来检测并进行纠正,提高了传输和存储数据的可靠性。
它的基本原理是将原始数据分成若干个数据块,然后,在每个数据块中添加一定数量的校验位,用于检测或者进行纠错。
在数据传输或者存储的时候,接收方会对收到的数据进行校验。检测出错误后,通过校验位来进行错误的纠正,最终得到正确的原始数据。海明校验的构成方法是在数据位之间的特定位置上插入 k的校验位,通过扩大码距从而实现检测和纠错。

步骤

设数据位是n位,校验位是k位,则n和k必须满足以下关系:
2k-1>=n+k
海明码的编码规则如下:
设k个校验位为Pk,Pk-1,…,P1, n个数据位为Dn,Dn-1,…,D1, 对应的海明码为Hn+k,Hn+k-1,…,H1

  1. 校验码Pi要放在2i-1的位置
  2. 海明码中的任何一位都是由若干个校验位来校验的。
  3. 被校验的海明位的下标等于所有参与校验该位的校验位的下标之和,而校验位由自身校验。

练习题

待传送的信息为1010,若采用海明校验,则奇校验规则下的海明码是()
A. 0110010
B. 0110011
C. 1110010
D. 1110011

答案:A

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

昇思25天学习打卡营第16天|LLM-MindNLP ChatGLM-6B StreamChat

打卡 目录 打卡 任务说明 环境配置 部署方式 ChatGLM-6B 体验截图示例 ChatGLM-6B 模型结构解析如下 ChatGLM2-6B 模型结构解析如下 任务说明 加载智谱清言的chatglm模型权重文件(目前有4个版本),本次主要尝试了chatglm-6b。 chatgl…

人工智能(AI)在办公场所的广泛应用

人工智能(AI)在办公场所的广泛应用正逐步改变着我们的工作方式和效率。随着技术的进步,越来越多的公司和组织开始采用各种AI技术来优化工作流程、提升生产力,并提供更好的用户体验。以下是人工智能在办公方面的一些主要作用和影响…

C++中,虚函数的作用详解

我个人认为虚函数的作用有两个: 增加安全性;提醒子类去做该做的事情。 提高效率;不是指程序执行效率,而是编码效率。 首先我这里要纠正一下: 一个函数被定义为虚函数,不代表这个函数未被实现&#xff1…

leetcode.nvim使用cookie无法登陆问题

错误描述: 使用力扣 (LeetCode) 全球极客挚爱的技术成长平台 的cookie在neovim上使用leetcode.nvim进行登录会出现curl xxx -D xxxx的报错。 解决方法: 使用LeetCode - The Worlds Leading Online Programming Learning Platform这个网站的cookie进行登…

这7款高效爬虫工具软件,非常实用!

在当今数据驱动的时代,自动化爬虫工具和软件成为了许多企业和个人获取数据的重要手段。这里会介绍6款功能强大、操作简便的自动化爬虫工具,用好了可以更高效地进行数据采集。 1. 八爪鱼采集器 八爪鱼是一款功能强大的桌面端爬虫软件,主打可…

轮船控制系统nmea2000电缆组件 7/8 T型连接器

NMEA 2000 7/8 T型连接器概述 NMEA 2000 7/8 T型连接器是专为船舶控制系统设计的电缆组件,主要用于连接船上的各种电子设备和系统,如GPS接收器、自动驾驶仪、风速和风向传感器、深度声纳等。这些设备通过NMEA 2000总线共享数据,包括导航信息…

1.Fabric框架

要了解Fabric,首先要知道Hyperledger开源项目。 2015年12月,由开源世界的旗舰组织Linux基金会牵头,30家初始企业成员共同宣布Hyperledger联合项目成立。Hyperledger 超级账本,是首个面向企业应用场景的分布式账本平台&#xff0c…

【算法】深入理解并优化算法:提升软件开发效率与质量

目录 一、算法的基本概念 输入 输出 确定性 有限性 有效性 二、常见算法类型 1. 排序算法 选择排序(Selection Sort) 插入排序(Insertion Sort) 快速排序(Quick Sort) 归并排序(Mer…

搜维尔科技:Movella推出面向自主机器和边缘人工智能应用的Xsens MTi传感器组合

Movella近日宣布针对自主机器和边缘人工智能应用,已增强旗下的Xsens MTi™惯性传感器模块。Xsens MTi传感器可与NVIDIA Jetson™平台轻松集成,用于边缘人工智能和机器人技术,并与NVIDIA Jetson AGX Orin™、NVIDIA Jetson Orin™ NX和NVIDIA …

基本聚集函数和case的应用

文章目录 1.基本聚集函数(1)基本聚集函数的介绍(2)使用基本聚集函数的简单例子&#xff08;1&#xff09;查询最大年龄&#xff0c;最小年龄年龄和平均年龄<1>最大年龄<2>最小年龄<3>平均年龄 (2&#xff09;配合上where语句&#xff0c;查询女士的平均年龄(…

虚拟化环境中如何实现以业务为中心的网络隔离?Everoute 推出虚拟专有云网络(VPC)功能

目前&#xff0c;不少企业都利用云计算和虚拟化技术提升 IT 系统灵活性、敏捷性和成本效益。然而&#xff0c;云环境的“多租户”特性也为业务安全带来了新的挑战&#xff0c;如何保障不同业务主体或租户之间的数据安全和网络隔离&#xff0c;成为企业关注的焦点。 作为 Smart…

(C++) 智能指针指定删除器

文章目录 ⌚前言⏲️注意 ⌚unique_ptr⏲️说明⏲️实例 ⌚shared_ptr⏲️说明⏲️实例 ⌚拓展⏲️函数类型 & 函数指针类型 ⌚END&#x1f31f;关注我 ⌚前言 自C11后&#xff0c;推出了三个智能指针。其中 unique_ptr和shared_ptr可以指定删除器。 但两者的形式却不太一…

【Canvas与艺术】红底白色压边五角星

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>精确压边五角星版本2</title><style type"text/css&qu…

Java IO模型深入解析:BIO、NIO与AIO

Java IO模型深入解析&#xff1a;BIO、NIO与AIO 一. 前言 在Java编程中&#xff0c;IO&#xff08;Input/Output&#xff09;操作是不可或缺的一部分&#xff0c;它涉及到文件读写、网络通信等方面。Java提供了多种类和API来支持这些操作。本文将从IO的基础知识讲起&#xff…

虚拟现实和增强现实技术系列—Expressive Talking Avatars

文章目录 1. 概述2. 背景介绍3. 数据集3.1 设计标准3.2 数据采集 4. 方法4.1 概述4.2 架构4.3 目标函数 5. 实验评测5.1 用户研究5.2 我们方法的结果5.3 比较与消融研究 1. 概述 支持远程协作者之间的交互和沟通。然而&#xff0c;明确的表达是出了名的难以创建&#xff0c;主…

两台电脑之间如何进行数据传输?两台电脑数据传输攻略

在数字化时代&#xff0c;电脑之间的数据传输变得日益重要。无论是个人用户还是企业用户&#xff0c;经常需要在不同的电脑之间共享或迁移数据。那么&#xff0c;两台电脑之间如何进行数据传输呢&#xff1f;本文将详细介绍两台电脑之间进行数据传输的几种常见方法&#xff0c;…

奖金+奖杯+荣誉证书 | FPGA硬件扑克牌比赛邀你参加

关键词&#xff1a;个人赛&#xff0c;随机发牌&#xff0c;比运气&#xff0c;还比设计&#xff0c;好玩又有趣 想用FPGA玩一场有趣的游戏吗&#xff1f;想检验自己的FPGA算法水平吗&#xff1f; “向日葵杯”全国教育仿真技术大赛——FPGA硬件扑克牌对抗赛等你来体验&#…

I can‘t link the chatbot model with react

题意&#xff1a;我无法将聊天机器人模型 chatbot 与React连接起来 问题背景&#xff1a; This is the model from flask import Flask, request, jsonify from flask_cors import CORS import json import nltk import numpy as np import random import pickle from time i…

英特尔终于宣布了解决CPU崩溃和不稳定性问题的方法,声称过高的电压是根本原因;补丁预计将于8月中旬推出【更新】

英特尔终于宣布了解决CPU崩溃和不稳定性问题的方法&#xff0c;声称过高的电压是根本原因&#xff1b;补丁预计将于8月中旬推出【更新】 英特尔官方宣布&#xff0c;已找到困扰其CPU的崩溃问题的根本原因&#xff0c;并将于8月中旬前发布微码更新以解决这一问题&#xff0c;从而…

聊聊 C# 中的顶级语句

前言 在 C# 9.0 版本之前&#xff0c;即使只编写一行输出 “Hello world” 的 C# 代码&#xff0c;也需要创建一个 C# 类&#xff0c;并且需要为这个 C# 类添加 Main 方法&#xff0c;才能在 Main 方法中编写代码。从 C# 9.0 开始&#xff0c;C# 增加了 “顶级语句” 语法&…