计算机网络之奇偶校验码和CRC冗余校验码

今天我们来看看有关于计算机网络的知识——奇偶校验码和CRC冗余校验码,这两种检测编码的方式相信大家在计算机组成原理当中也有所耳闻,所以今天我就来跟大家分享有关他们的知识。


奇偶校验码

奇偶校验码是通过增加冗余位使得码字中1的个数恒为奇数或偶数的编码方法,它是一种检错码。根据被传输的一组二进制代码的数位中“1”的个数是奇数还是偶数来进行校验,可分为奇校验和偶校验。给每一个码字加一个校验位,用它来构成奇性或偶性校验。具体来说,如果是奇校验,则在数据二进制位后面添加一个奇校验位,使数据位和校验位中二进制位1出现的个数总是奇数个;如果是偶校验,则使1的个数为偶数。

我们按照下图当中的两个编码,分别对他们使用奇偶校验,来更加直观的了解奇偶校验。

奇校验

我们看上面的10100010,它有奇数个1,那么就在最后的校验位加上0。

第二个10100000,它的1为偶数个,那么根据奇校验我们就要在校验位上加上1。

偶校验

偶校验则同理。第一个10100010,有奇数个1,则在校验位上加上1。

第二个10100000,它的1为偶数个,那么根据奇校验我们就要在校验位上加上0。

优缺点

但是奇偶校验码也存在一些问题:

  • 优点:奇偶校验码是一种非常有效的数据验证方法,能够检测出数据传输过程中的错误,保护数据的完整性和准确性。
  • 缺点:然而,奇偶校验码只能检测出错误的数据,而不能确定错误的具体位置,也不能检测出偶数位错误或恶意数据。此外,其效率相对较低,对于复杂的数据校验需求可能不够高效。

CRC冗余校验

CRC是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦测的功能。具体来说,CRC是两个字节数据流采用二进制除法(没有进位,使用XOR来代替减法)相除所得到的余数。其中被除数是需要计算校验和的信息数据流的二进制表示;除数是一个长度为n的预定义(短)的二进制数,通常用多项式的系数来表示。

在CRC当中,我们需要通过多项式和异或运算来得到是否出错。如果最终刚好整除,得到0,那么就说明没有出错。反之则有错误。

假设我们有一个多项式G(x)和一个信息位如下:

那么我们可以由多项式G(x)得出用于校验的“除数“10111”,并且因为G(x)的最高位的次数是4,我们就给信息位不上4个0。最后我们用10100010000去除10111,通过异或运算可以得到如下的计算过程:

因为最终的结果为1101,不为0,因此我们可以得出在传输过程中有错误产生。

CRC的检验能力

CRC除了能检查出随机差错外,也可以检查突发的错误。

  • CRC可以检查全部离散的一位错误
  • CRC可以检查全部离散的两位错误
  • 能检查全部的奇数位差错
  • 能检查全部长度小于等于k的突发差错(k是多项式的最高幂值)

总结

总的来讲今天我们看了两种检验方法,希望对大家有所帮助。如果对大家有所帮助,希望大家可以给我一个点赞或关注,这对我非常重要,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式项目分享| 终极智能手表,全过程+全开源分享

这是一个非常完整的智能手表开源项目,功能齐全,且资料开源,如果你是:自己平时喜欢diy的工程师,想要提升开发技能的学生,马上要做毕设的大四学生,这个手表很值得一做,别错过了~~ 所有开源的资料以及原文链接见文末。 先来看下这个手表的功能: 首先,是一个可以佩戴的手…

微型导轨:手术机器人的高精度“骨骼”

微型导轨精度高,摩擦系数小,自重轻,结构紧凑,被广泛应用在医疗器械中,尤其是在手术机器人中的应用,通过手术机器人,外科医生可以远离手术台操纵机器人进行手术。可以说,是当之无愧的…

经验分享,在线word转图片

这里分享一个在线word转图片的网站,比较好用 网址:http://www.docpe.com/word/word-to-image.aspx 截图:

Spring Boot如何实现跨域资源共享(CORS)?

🍅 作者简介:哪吒,CSDN2021博客之星亚军🏆、新星计划导师✌、博客专家💪 🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师 🍅 技术交流:定期更新…

浔川3样AI产品即将上线!——浔川总社部

浔川3样AI产品即将上线! 浔川AI翻译v3.0 即将上线! 浔川画板v5.1 即将上线! 浔川AI五子棋v1.4 即将上线! 整体通告详见:浔川AI五子棋(改进(完整)版1.3)——浔川python社…

Java洗鞋预约小程序源码

💥洗鞋神器来袭!轻松预约,让你的鞋子焕然一新👟 🎉 告别洗鞋烦恼,洗鞋预约小程序来啦! 你是不是常常为洗鞋而烦恼?手洗太累,送去洗衣店又贵又麻烦。现在,好…

初识Java(二)

初识Java的main方法 1.1 main方法示例 public class world {public static void main(String[] args) {System.out.println("hello,world!");}}通过上述代码,我们可以看到一个完整的Java程序的结构,Java程序的结构由如下三个部分组成&#x…

Day 34:2368. 受限条件下可到达节点的数目

Leetcode 2368. 受限条件下可到达节点的数目 现有一棵由 n 个节点组成的无向树,节点编号从 0 到 n - 1 ,共有 n - 1 条边。 给你一个二维整数数组 edges ,长度为 n - 1 ,其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一…

【广度优先搜索 深度优先搜索 图论】854. 相似度为 K 的字符串

本文涉及知识点 广度优先搜索 深度优先搜索 图论 图论知识汇总 深度优先搜索汇总 CBFS算法 LeetCode 854. 相似度为 K 的字符串 对于某些非负整数 k ,如果交换 s1 中两个字母的位置恰好 k 次,能够使结果字符串等于 s2 ,则认为字符串 s1 和…

three.js 第十一节 - uv坐标

// ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入lil.gui import { GUI } from three/examples/jsm/libs/lil-gui.module.min.js // 导入tween import * as T…

基于Java微信小程序民宿短租系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

Linux rpm包管理

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志&am…

【Redis】

Redis 常见面试题 认识 Redis 什么是 Redis? 我们直接看 Redis 官方是怎么介绍自己的。 Redis 官方的介绍原版是英文的,我翻译成了中文后截图的,所以有些文字读起来会比较拗口,没关系,我会把里面比较重要的特性抽出来…

经典游戏案例:仿植物大战僵尸

学习目标:仿植物大战僵尸核心玩法实现 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using Random UnityEngine.Random;public enum…

STM32启动流程 和 map文件的作用

一,启动流程 1. 复位/上电 2. 根据 BOOT0/BOOT1 确定程序从哪个存储位置执行 3. 初始化 SP 及 PC 指针 将 0X08000000 位置的栈顶地址存放在 SP 指针中 将 0x08000004 位置存放的向量地址装入 PC 程序计数器 4. 初始化系统时钟 5. 初始化用户堆栈 6. 进入main函数 二…

idea中maven新增的配置文件xx.xml没生效问题

项目场景: 因为公司使用自己的私服下载jar,则没有使用默认的settings.xml文件。而是新增了一个settingsold.xml文件 问题描述 公司项目有用自己的私服,Maven正常去私服下载jar包是没问题的。但是一直是去找的阿里云镜像,到导致阿里云镜像找不到相关的jar包报错!!!…

条码二维码读取设备在医疗设备自助服务的重要性

医疗数字信息化建设的深入推进,医疗设备自助服务系统已成为医疗服务领域的一大趋势,条码二维码读取设备作为自助设备的重要组成部分,通过快速、准确地读取条形码二维码信息,不公提升了医疗服务效率,还为患者提供了更加…

CMN-700(1)CMN-700概述

本章介绍CMN-700,这是用于AMBA5 CHI互连,且可根据需要定制的网格拓扑结构。 1. 关于CMN‐700 CMN‐700是一种可配置扩展的一致性互连网络,旨在满足高端网络和企业计算应用中使用的一致性网络系统的功率、性能和面积(PPA)要求。支持1-256个处…

PHP 界的扛把子 Swoole 异步通信利器

大家好,我是码农先森。 引言 我今天主要介绍的内容是包括但不仅限于 Swoole ,也有一部分 Go 语言的内容。 为什么要介绍 Swoole ? 先说一说背景吧,我们项目组之前要为《香港 01》开发一个积分系统的项目,这个系统的主要功能包…

【Linux详解】冯诺依曼架构 | 操作系统设计 | 斯坦福经典项目Pintos

目录 一. 冯诺依曼体系结构 (Von Neumann Architecture) 注意事项 存储器的意义:缓冲 数据流动示例 二. 操作系统 (Operating System) 操作系统的概念 操作系统的定位与目的 操作系统的管理 系统调用和库函数 操作系统的管理: sum 三. 系统调…