错误检测技术:奇偶校验
文章目录
- 参考
- 描述
- 奇校验与偶校验
- 错误检测技术
- 奇偶校验
- 奇校验与偶校验
- 奇校验
- 偶校验
- 局限性
- 漏网之鱼
- 奇偶校验的三种形式
- 水平奇偶校验
- 垂直奇偶校验
- 水平垂直奇偶校验
- 优劣
- 漏网之鱼
参考
| 项目 | 描述 |
|---|---|
| 搜索引擎 | Google 、Bing |
| 百度百科 | 奇偶校验 |
| 计算机网络 基础与应用(微课版) | 孟敬 著 |
描述
| 项目 | 描述 |
|---|
奇校验与偶校验
错误检测技术
错误检测技术是数字通信领域中非常重要的一项技术,主要用于检测在数据传输过程中可能出现的错误,保证数据的可靠性。常见的错误检测技术包括奇偶校验、循环冗余校验(CRC)、海明码等。
奇偶校验
奇偶校验是一种简单的错误检测技术,常用于数字通信中。奇偶校验的基本思想是在数据中添加一个(通常情况下,在添加该比特位后,该数据的大小为一个字节,即八比特)额外的比特位(奇偶校验位),使得数据中比特位为 1 的个数能够满足奇偶性的要求。
奇校验与偶校验
奇校验
在需要传输的数据中添加一个奇偶校验位,使得整个数据中 1 的个数为 奇数。 发送方在发送数据前计算奇偶校验位,并将其添加到数据包中。
接收方在接收到数据包后,重新计算奇偶校验位,如果计算得到的校验位与发送方发送的校验位不同(发送的数据中,1 的个数为 偶数),则说明在传输过程中出现了错误。
举个栗子
| 数据位 | 奇校验位 | 数据 |
|---|---|---|
| 0010100 | 1 | 00101001 |
| 1101010 | 1 | 11010101 |
| 1010111 | 0 | 10101110 |
偶校验
在传输的数据中添加一个奇偶校验位,使得整个数据中 1 的个数为 偶数。 发送方在发送数据前计算奇偶校验位,并将其添加到数据包中。
接收方在接收到数据包后,重新计算奇偶校验位,如果计算得到的校验位与发送方发送的校验位不同(发送的数据中,1 的个数为 奇数),则说明在传输过程中出现了错误。
举个栗子
| 数据位 | 偶校验位 | 数据 |
|---|---|---|
| 0010100 | 0 | 00101000 |
| 1101010 | 0 | 11010100 |
| 1010111 | 1 | 10101111 |
局限性
漏网之鱼
在数据(包括 校验位)中存在奇数个错误时,奇校验与偶校验能够检测出数据发生了变化。但是,如果有偶数个错误时,那么它们会互相抵消,使得数据块中 1 的个数仍然符合奇偶性要求,这时奇偶校验就无法检测出这些错误了,这意味着从理论上来说,奇校验或偶校验仅有 50% 的几率能够检测到错误(但大多数情况是仅存在单个比特位存在差错或者没有差错)。
当数据中存在偶数个错误时,奇偶校验中可能发生的抵消情况可以用如下三个公式表示:
- 数据中增加了两个相同的二进制位(0 或 1)。
n + 2 n = 3 n n + 2n = 3n n+2n=3n
- 数据中减少了两个相同的二进制位。
3 n − 2 n = n 3n - 2n = n 3n−2n=n
- 数据中增加和减少一个不同的二进制位。
3 n − n + n = 3 n 3n -n +n = 3n 3n−n+n=3n
奇偶校验的三种形式
水平奇偶校验
水平奇偶校验的原理是将要发送的数据分为含有 p 位的 q 段数据,对每一个段中的数据位进行奇偶校验,产生一个奇偶校验位,通常放在段的最后一位,作为校验码传输。这种校验方式可以检测出数据的奇偶性是否正确,但无法检测出数据的具体错误位置,也无法纠正错误。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行水平偶校验。
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 校验位 |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
垂直奇偶校验
垂直奇偶校验的原理是将要发送的数据分为含有 p 位的 q 段数据,将每段数据中对应的比特位进行对齐,对每一个列中的数据进行奇偶校验,产生一个奇偶校验位,通常放在列的最后一位,作为校验码传输。这种校验方式可以检测出数据的奇偶性是否正确,但无法检测出数据的具体错误位置,也无法纠正错误。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行垂直偶校验。
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | |
| 校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
水平垂直奇偶校验
水平垂直奇偶校验可以看作是水平奇偶校验与垂直奇偶校验的结合。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行水平垂直偶校验。
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | |
| 垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
优劣
漏网之鱼
水平垂直奇偶校验的基本思想是将数据划分成多个块,并分别计算每一行和每一列的奇偶校验位,然后将这些校验位一起发送给接收方。接收方在接收到数据后,也会分别计算每一行和每一列的奇偶校验位,然后将计算得到的校验位与发送方发送的校验位进行比较,从而检测数据中是否存在错误。
对于奇数个错误,水平垂直奇偶校验能够检测出所有的错误。 因为在这种情况下,必定会导致至少一行或一列的奇偶校验位与发送方的校验位不一致,从而被检测出来。
对于偶数个错误,水平垂直奇偶校验能够检测出大部分错误。 如果错误所处的行和列中存在偶数个(包括自身)错误,则错误将无法被检测出来。对此,请参考如下示例:
原数据
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
| 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | |
| 垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
错误数据
由于错误所导致的校验位变化相互抵消,致使发生错误的数据所计算出的检验位与原校验位一致。因此,奇偶校验机制并不能发现数据的变化。
| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
| 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | |
| 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | |
| 垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
水平垂直奇偶校验相对于奇偶校验来说,虽然能够提供更好的错误检测能力,但它仍然存在一定的限制,不能保证检测所有的错误。
相关文章:
错误检测技术:奇偶校验
文章目录 参考描述奇校验与偶校验错误检测技术奇偶校验 奇校验与偶校验奇校验偶校验局限性漏网之鱼 奇偶校验的三种形式水平奇偶校验垂直奇偶校验水平垂直奇偶校验优劣漏网之鱼 参考 项目描述搜索引擎Google 、Bing百度百科奇偶校验计算机网络 基础与应用(微课版&a…...
语义版本控制规范(SemVer)
Semantic Versioning 2.0.0 官网 给出一个版本号MAJOR.MINOR.PATCH,增加如下: MAJOR version 进行不兼容的API更改时MINOR version 当您以向后兼容的方式添加功能时PATCH version 当您进行向后兼容的错误修复时 预发布(pre-release )和构建元数据的附…...
基于Flask的留言板的设计与实现
这是《Flask Web开发实战:入门、进阶与原理解析》这本书中的一个小项目,我在学习后根据书中的教程实现了留言板的功能,并结合我的思路将代码做了一些调整。 下面这是实现后的展示图片 文章目录 设计思路项目代码exts.pymodels.pyforms.pyerrors.pycomma…...
vmware 详细安装教程
一.VM是什么? VMware Workstation是一个“虚拟 PC”软件。它使你可以在一台机器上同时运行二个或更多 Windows、DOS、LINUX 系统。与“多启动”系统相比,VMWare 采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需…...
Python 爬虫工具
Python3 默认提供了urllib库,可以爬取网页信息,但其中确实有不方便的地方,如:处理网页验证和Cookies,以及Hander头信息处理。 为了更加方便处理,有了更为强大的库 urllib3 和 requests, 本节会分别介绍一下…...
再也不去字节跳动面试了,6年测开经验的真实面试经历.....
前几天我朋友跟我吐苦水,这波面试又把他打击到了,做了快6年软件测试员。。。为了进大厂,也花了很多时间和精力在面试准备上,也刷了很多题。但题刷多了之后有点怀疑人生,不知道刷的这些题在之后的工作中能不能用到&…...
第十五章 角色移动旋转实例
本章节我们创建一个“RoleDemoProject”工程,然后导入我们之前创建地形章节中的“TerrainDemo.unitypackage”资源包,这个场景很大,大家需要调整场景视角才能看清。 接下来,我们添加一个人物模型,操作方式就是将模型文…...
数据湖Data Lakehouse支持行级更改的策略:COW、MOR、Delete+Insert
COW:写时复制,MOR:读时合并,Delete+Insert:保证同一个主键下仅存在一条记录,将更新操作转换为Delete操作和Insert操作 COW和MOR的对比如下图,而Delete+Insert在StarRocks主键模型中用到。 目前COW、MOR在三大开源数据湖项目的使用情况,如下图。 写入时复制【Copy-On…...
双亲委派机制的原理和作用
双亲委派机制,就必须弄清楚Java的类加载器。 什么是类加载器 Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分,负责动态的将Java类加载到Java虚拟机的内存空间。 类加载器有哪些 主要有三个: 引导类加载器(Bootstrap ClassLoade…...
mac免费杀毒软件哪个好用?如何清理mac系统需要垃圾
CleanMyMac x是一款功能强大的Mac系统优化清理工具,使用旨在帮助用户更加方便的清理您系统中的所有垃圾,从而加快电脑运行速度,保持最佳性能,更加稳定、流畅、快速!!! CleanMyMac X无疑是目前m…...
css 实现太极效果
目录 一、简述二、太极效果制作 一、简述 本次主要介绍::after,::before,box-shadow这三个属性。 ::after,::before这两个是伪类选择器,box-shaow是用来设置元素的阴影效果 before:向选定的元素前插入内容 after:向选定的元素后插…...
【前端基础知识】Vue中的变量不是响应式的吗?属性赋值后视图不变化的原因是什么?
目录 🤔问题📝回答🎨使用场景动态添加属性动态添加数组元素 ❌注意事项$set只能在响应式对象上使用$set不能用于根级别的属性$set的性能问题 📄总结 🤔问题 Vue是一款在国内非常流行的框架,采用MVVM架构&a…...
如何完全卸载linux下通过rpm安装的mysql
卸载linux下通过rpm安装的mysql 1.关闭MySQL服务2.使用 rpm 命令的方式查看已安装的mysql3. 使用rpm -ev 命令移除安装4. 查询是否还存在遗漏文件5. 删除MySQL数据库内容 1.关闭MySQL服务 如果之前安装过并已经启动,则需要卸载前请先关闭MySQL服务 systemctl stop…...
[渗透教程]-004-长城防火墙GFW的原理
文章目录 1. baidu.com 请求过程2. GFW原理2.1 GFW拦截方法1:DNS渲染2.2 通过IP黑名单2.3 VPN阻断1. baidu.com 请求过程 家庭的路由器具备了交换机的功能.域名–>ip,优先检测本地的缓存,没有的话就查找DNS服务器,传输层对应该层的数据进行封装增加了端口的信息,网络层对传输…...
LaTeX基础文本排版命令
LaTeX基础文本排版命令 1. 字体大小2. 字体的粗体与斜体2.1. 粗体2.2 斜体2.3 同时启用粗体和斜体 3. 空格长度4. 高度与宽度尺寸 在LaTeX中,文本排版可以通过简单的命令实现,这些命令可以控制字体大小、粗体与斜体、空格、行高和宽度等方面,…...
PLC模糊控制模糊PID(梯形图实现+算法分析)
博途PLC的模糊PID控制详细内容请查看下面的博客文章: Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-CSDN博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容…...
线程池在Java多线程中的应用
前言 随着计算机硬件和软件技术的不断发展,多线程编程在软件开发中变得越来越常见。然而,使用多线程编程时必须小心谨慎,以确保正确性和可维护性。在这个过程中,线程池成为了一个至关重要的工具。本文将介绍其应用场景、注意事项…...
1997-2021年全国30省技术市场成交额(亿元)
1997-2021年全国30省技术市场成交额 1、时间:1997-2021年 2、范围:30省不含西藏 3、来源:国家统计J 4、指标:技术市场成交额 5、缺失情况说明:无缺失 6、指标解释及用途: 技术市场成交额是一个客观、…...
【C++】面向对象之多态
文章内的所有调试都是在vs2022下进行的, 部分小细节可能因编译器不同存在差异。 文章目录 多态的定义和实现概念引入多态的构成条件虚函数重写通过基类的指针或者引用调用虚函数 override和final 抽象类概念实现继承和接口继承 虚函数表单继承中的虚表打印虚表多继…...
卡尔曼滤波器简介——多维卡尔曼滤波
原文:多维卡尔曼滤波 (kalmanfilter.net) 目录 前言 基本背景 状态外推方程 示例 - 飞机 - 无控制输入 示例 - 带控制输入的飞机 示例 – 坠落物体 状态外推方程维度 线性时不变系统 线性动态系统建模 状态外推方程的推导 状态空间表示形式 示例 - 等速…...
Swashbuckle.AspNetCore 生产环境部署指南:安全配置API文档的终极方案
Swashbuckle.AspNetCore 生产环境部署指南:安全配置API文档的终极方案 【免费下载链接】Swashbuckle.AspNetCore Swagger tools for documenting APIs built on ASP.NET Core 项目地址: https://gitcode.com/gh_mirrors/sw/Swashbuckle.AspNetCore Swashbuck…...
曾经我和大模型交流业务实现记录
第一次: 我有一组子组件11个,通过子组件的不同组合,可以组成表单,这些表单让不同的用户使用,表单组成公共的内容,让大部分用户使用,当然用户可以在这些表单的基础上修改一些默认值,变…...
OpenClaw学习助手:Gemma-3-12b-it生成错题本与定制复习计划
OpenClaw学习助手:Gemma-3-12b-it生成错题本与定制复习计划 1. 为什么需要AI学习助手? 作为一名经常需要处理大量学习资料的开发者,我一直在寻找能够提升学习效率的工具。传统的错题本整理方式需要手动抄写题目、标注知识点、寻找同类练习题…...
MCP3208 12位SPI ADC嵌入式驱动与硬件设计实战
1. MCP3208芯片深度解析:面向嵌入式系统的12位8通道SPI模数转换器工程实践1.1 芯片定位与核心价值MCP3208是Microchip公司推出的逐次逼近型(SAR)模数转换器,专为资源受限的嵌入式系统设计。其核心价值在于以极简硬件接口ÿ…...
个人 AI 助理——打造你的第二大脑
个人 AI 助理——打造你的第二大脑摘要:信息过载时代,个人 AI 助理不再是奢侈品,而是必需品。本文教你如何搭建专属 AI 助理,实现信息管理、知识沉淀、决策辅助的智能化,让 AI 成为你的"第二大脑"。一、为什…...
使用Image - To - image条件生成对抗网络评估乳腺癌新辅助化疗反应的动态对比增强MRI血管渗透性映射
论文总结1、提出了一种基于条件生成对抗网络(cGAN)的新方法,用于将动态对比增强磁共振成像(DCE MRI)快速转换为药代动力学(PK)血管通透性参数图(Ktrans),以早…...
Qwen3.5-2B边缘部署教程:ARM架构服务器上运行多模态模型详细步骤
Qwen3.5-2B边缘部署教程:ARM架构服务器上运行多模态模型详细步骤 1. 引言 Qwen3.5-2B是阿里云推出的轻量化多模态基础模型,属于Qwen3.5系列的小参数版本(20亿参数)。这款模型主打低功耗、低门槛部署,特别适配端侧和边…...
基于GOOSE - Transformer - LSTM的数据回归预测探索
基于GOOSE-Transformer-LSTM的数据回归预测 模型结合Transformer的全局注意力机制和LSTM的短期记忆及序列处理能力 首先,采用Transformer自注意力机制捕捉数据的全局依赖性,并输出一个经过全局上下文编码的表示;然后,采用2024年最…...
三极管信号滤波原理与工程实践
1. 三极管在信号滤波中的独特应用作为一名嵌入式硬件工程师,我经常需要处理各种传感器信号。最近在无刷电机驱动项目中,遇到了霍尔信号毛刺干扰的问题。传统教科书上总是强调三极管的放大作用,但实际工程中,我发现三极管在信号滤波…...
告别重复造轮子:用快马平台高效生成ibbot开发脚手架与核心模块
今天想和大家分享一个提升ibbot开发效率的实用技巧。作为一个经常需要开发对话机器人的程序员,我发现每次从零开始搭建项目结构、编写基础模块特别耗时。最近尝试用InsCode(快马)平台生成项目脚手架,效果出乎意料的好。 项目结构自动生成 平台能根据自然…...
