达尔文路88号6号2楼 13317348021 jiyoujiaoliu@baidu.ag

新闻动态

三份重复记录为什么也会一起判错:七组翻转实验的多数读取(实例14)

2026-11-04

简单的重复编码会把一个二进制位写三次,再用多数决定读回值。它能处理每组三位中只有一位翻转的情况,但多数一致不代表没有错误。理解失败条件比只看成功案例更有用。

先固定规则和输入

原始数据共八位,每位依次复制成连续三位,得到二十四位。读取时每组三位中至少两个一就输出一。这里只讨论翻转,不讨论丢失、插入或记录顺序改变。

原始八位[1, 1, 0, 0, 1, 1, 1, 0] 连续三重编码111111000000111111111000

把结果按步骤记下来

实验1翻转位置[],各组三位错误数[0, 0, 0, 0, 0, 0, 0, 0],收到的位串111111000000111111111000,多数读回[1, 1, 0, 0, 1, 1, 1, 0],读错的原位索引[]。

实验2翻转位置[2, 3, 6, 9, 12, 17, 20, 23],各组三位错误数[1, 1, 1, 1, 1, 1, 1, 1],收到的位串110011100100011110110001,多数读回[1, 1, 0, 0, 1, 1, 1, 0],读错的原位索引[]。

实验3翻转位置[3, 9],各组三位错误数[0, 1, 0, 1, 0, 0, 0, 0],收到的位串111011000100111111111000,多数读回[1, 1, 0, 0, 1, 1, 1, 0],读错的原位索引[]。

实验4翻转位置[1, 9, 12, 21],各组三位错误数[1, 0, 0, 1, 1, 0, 0, 1],收到的位串101111000100011111111100,多数读回[1, 1, 0, 0, 1, 1, 1, 0],读错的原位索引[]。

实验5翻转位置[0, 5, 7, 8, 12, 17, 19],各组三位错误数[1, 1, 2, 0, 1, 1, 1, 0],收到的位串011110011000011110101000,多数读回[1, 1, 1, 0, 1, 1, 1, 0],读错的原位索引[2]。

实验6翻转位置[2, 8, 14, 15, 16, 18, 19, 20, 21],各组三位错误数[1, 0, 1, 0, 1, 2, 3, 1],收到的位串110111001000110001000100,多数读回[1, 1, 0, 0, 1, 0, 0, 0],读错的原位索引[5, 6]。

实验7翻转位置[0, 1, 4, 6, 8, 14, 18, 19, 20, 21, 22, 23],各组三位错误数[2, 1, 2, 0, 1, 0, 3, 3],收到的位串001101101000110111000111,多数读回[0, 1, 1, 0, 1, 1, 0, 1],读错的原位索引[0, 2, 6, 7]。

第二组特意让每组三位恰好错一位,仍应完整恢复;其余组按错误分布判断,不能只比较二十四位中的总错误数。

自己复核的办法

对比原文和读回值,并按每组三位的翻转数量解释差异。零或一处翻转应保持原位,两或三处翻转会得到相反结果;任何检验都不能仅凭三份中有两份相同就宣布完全可靠。

建议先遮住结果,用本例原始输入独立完成一遍,再逐项对照。若出现差异,先找最早不一致的位置,检查索引从零还是从一开始、边界是否包含,以及比较或更新发生的先后。只比较最后一个数,往往无法分辨规则理解与计算步骤分别出了什么问题。

使用这个练习的边界

重复存储增加了空间,但不是加密,也不能保证故障彼此独立。这个练习适合认识纠错边界,不应把它当成实际存档完整性保护方案;正式存档仍需适当的格式校验和恢复机制。