Parity Bit 奇偶校验
(英文版请参考 https://github.com/julianShi/public/issues/17)
用一个实例展开讨论。如下,用3-3矩阵储存9个bit数据
1 1 0
0 0 0
0 0 0
假如一个bit出错了,比如某个bit反转了。
1 1 0
0 1 0
0 0 0
那么可以通过这个bit的行列信息定位这个它。为此,我们为矩阵增加一行一列
1 1 0 0
0 0 0 0
0 0 0 0
1 1 0
其中,第四行和第四列是parity bits。0代表所属行/列数字和是偶数,0代表所属行/列数字和是奇数。如果出现错误,parity bits会发生相应改变
1 1 0 0
0 1 0 1
0 0 0 0
1 0 0
在这个例子中,第二行和第二列对应的parity bit就改变了。因此可以定位错误出在第二行第二列那个bit.
分析
把案例拓展到m行n列,空间复杂度是O(m+n)
进一步分析
根据二进制的讨论,这个问题的空间复杂度可以进一步优化。如果矩阵各维度尺寸固定在2,把矩阵扩展到k维度,那么可以用 O(2*k) 额外空间来校验 O(2^k) bits。这其实也是Hamming coding 的设计思想。Hamming coding解释起来稍复杂,但是代码实现容易。
Two-Error Detection
有两个bit反转的时候,上述算法失效。如下,
1 1 0 0
0 1 1 0
0 0 0 0
1 0 1
其中第四列parity bits都没发生变化,而第四行parity bits中有两个发生变化。没有行信息,所以没法定位出错bits。
实际上多bit反转问题可以在高维度矩阵存储中解决。比如三维矩阵可以处理2个bit反转。你知道具体如何实现吗?^_<
Parity Bit 奇偶校验相关推荐
- Parity和ECC
带有奇偶校验的内存的主要功能 要了解ECC技术,就不能不提到Parity(奇偶校验).在ECC技术出现之前,内存中应用最多的是另外一种技术,就是Parity(奇偶校验).我们知道,在 数字电路中,最小 ...
- VC串口通信编程-2
VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...
- C#版及nodejs版的com端口监听程序
感受: 写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了.所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人. 最近写一个com端口 ...
- 常见的服务器内存浅析
注:本篇博文内容摘录自互联网,本人只做整理,整理的目的单纯只为自己学习积累,无任何商业目的,本人不承担任何责任和连带责任. ECC内存 ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条 ...
- Linux 串口编程分析
这个话题,大家可能再熟悉不过了,网上资料很多,因为这是linux下编程比较重要的一个方面,懂这方面的人很多:这里我只是想给初学者简单的介绍下这方面的知识: 串口编程其实说白了, 是拿根串口线把电脑和所 ...
- readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例
西门子PLC-1200的基于232串口的Modbus RTU通讯实例 这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus ...
- C/C++串口通信原理及读写与操作
http://wangbaiyuan.cn/c-serial-communication-write-reading.html [展开]文章目录 在工业控制中,工控机(一般都基于Windows平台)经 ...
- DOSbox汇编集成环境下的具体设置
alt+enter能够全屏幕,假设认为游戏执行速度不合适,能够改动 cycles=3000 .将3000适当调整大小. 3.执行 DOSBox,会打开两个 DOS 窗体.我们仅仅需在例如以下窗体中键入 ...
- 串口接收中断配置过程---STM32F4--HAL
串口接收中断程序配置过程(HAL) 初始化相关参数,使能串口: HAL_UART_Init(); 该函数的参数是串口的基址,在stm32f429xx.h文件中,定义了8个UART_HandleType ...
- 串口发送通信---UART发送---STM32F4实现
串口发送程序配置过程(HAL库) 初始化串口相关参数,使能串口 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) 该函数的参数是串口 ...
最新文章
- 数据分析师在岗3年小结!
- Linux原始套接字学习总结
- 【学术相关】这个英文语法校正插件很赞!可以校正邮件,也可以校正论文
- 【Python基础】这份 pip 使用小抄,要有全有多全(建议收藏)
- 2021CCPC河北省省赛F题(河南省CCPC测试赛重现)
- Android之解决aidl里面函数参数太大不能跨进程通信的问题
- WPF--TextBlock的ToolTip附加属性
- 7-20 打印九九口诀表 (15 分)
- 如何java面试_短时间如何过java面试?
- linux启动mysql_允许远程连接到MySQL数据库服务器的步骤
- Python爬虫框架Scrapy报错:ModuleNotFoundError: No module named 'scrapy'
- slice indices must be integers or None or have an __index__ method
- vsftp的简单搭建
- 机器学习——逻辑回归算法代码实现
- 南京大学计算机有分学硕专硕,南京大学的学硕和专硕有什么区别吗
- 观测云产品更新|新增阿里云账户结算方式;新增 DQL 查询查看器;新增基础设施网络模块等
- windows搭建wordpress方法-windows搭建wordpress教程
- 关于无法安装.NET Framework3.5的问题(0x800F081F)
- Chisel 手册(中文part1)
- 生成式对抗网络(GAN)-(Generative Adversarial Networks)算法总结(从原始GAN到....目前)