(英文版请参考 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 奇偶校验相关推荐

  1. Parity和ECC

    带有奇偶校验的内存的主要功能 要了解ECC技术,就不能不提到Parity(奇偶校验).在ECC技术出现之前,内存中应用最多的是另外一种技术,就是Parity(奇偶校验).我们知道,在 数字电路中,最小 ...

  2. VC串口通信编程-2

    VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...

  3. C#版及nodejs版的com端口监听程序

    感受: 写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了.所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人. 最近写一个com端口 ...

  4. 常见的服务器内存浅析

    注:本篇博文内容摘录自互联网,本人只做整理,整理的目的单纯只为自己学习积累,无任何商业目的,本人不承担任何责任和连带责任. ECC内存 ECC内存,即应用了能够实现错误检查和纠正技术(ECC)的内存条 ...

  5. Linux 串口编程分析

    这个话题,大家可能再熟悉不过了,网上资料很多,因为这是linux下编程比较重要的一个方面,懂这方面的人很多:这里我只是想给初学者简单的介绍下这方面的知识: 串口编程其实说白了, 是拿根串口线把电脑和所 ...

  6. readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例

    西门子PLC-1200的基于232串口的Modbus RTU通讯实例 这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus ...

  7. C/C++串口通信原理及读写与操作

    http://wangbaiyuan.cn/c-serial-communication-write-reading.html [展开]文章目录 在工业控制中,工控机(一般都基于Windows平台)经 ...

  8. DOSbox汇编集成环境下的具体设置

    alt+enter能够全屏幕,假设认为游戏执行速度不合适,能够改动 cycles=3000 .将3000适当调整大小. 3.执行 DOSBox,会打开两个 DOS 窗体.我们仅仅需在例如以下窗体中键入 ...

  9. 串口接收中断配置过程---STM32F4--HAL

    串口接收中断程序配置过程(HAL) 初始化相关参数,使能串口: HAL_UART_Init(); 该函数的参数是串口的基址,在stm32f429xx.h文件中,定义了8个UART_HandleType ...

  10. 串口发送通信---UART发送---STM32F4实现

    串口发送程序配置过程(HAL库) 初始化串口相关参数,使能串口 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart) 该函数的参数是串口 ...

最新文章

  1. 数据分析师在岗3年小结!
  2. Linux原始套接字学习总结
  3. 【学术相关】这个英文语法校正插件很赞!可以校正邮件,也可以校正论文
  4. 【Python基础】这份 pip 使用小抄,要有全有多全(建议收藏)
  5. 2021CCPC河北省省赛F题(河南省CCPC测试赛重现)
  6. Android之解决aidl里面函数参数太大不能跨进程通信的问题
  7. WPF--TextBlock的ToolTip附加属性
  8. 7-20 打印九九口诀表 (15 分)
  9. 如何java面试_短时间如何过java面试?
  10. linux启动mysql_允许远程连接到MySQL数据库服务器的步骤
  11. Python爬虫框架Scrapy报错:ModuleNotFoundError: No module named 'scrapy'
  12. slice indices must be integers or None or have an __index__ method
  13. vsftp的简单搭建
  14. 机器学习——逻辑回归算法代码实现
  15. 南京大学计算机有分学硕专硕,南京大学的学硕和专硕有什么区别吗
  16. 观测云产品更新|新增阿里云账户结算方式;新增 DQL 查询查看器;新增基础设施网络模块等
  17. windows搭建wordpress方法-windows搭建wordpress教程
  18. 关于无法安装.NET Framework3.5的问题(0x800F081F)
  19. Chisel 手册(中文part1)
  20. 生成式对抗网络(GAN)-(Generative Adversarial Networks)算法总结(从原始GAN到....目前)

热门文章

  1. 如何学计算机打字,电脑怎么学打字
  2. 华为云鲲鹏云服务介绍
  3. 人生苦短_人生苦短的说说、句子及图片
  4. 关于Ceisum中的heading、pitch、roll的定义
  5. 06-数据类型的常用操作-字符串常用操作
  6. 正在开启,一名金融猎头的二十年 | 专访伯乐百万金融顾问 Leslie Xu
  7. 十进制转8421_BCD码
  8. 最全的Python教程【合集】| 寻找C站宝藏
  9. orocos KDL 由位置计算力矩
  10. [Xilinx FPGA] #4 Xilinx FPGA 芯片命名规则与查询方法