首页 > 其他分享 >软件设计师学习-海明码

软件设计师学习-海明码

时间:2023-10-07 23:47:23浏览次数:37  
标签:校验位 明码 校验 数据位 D6 软件 设计师 D3

wiki

海明码(Hamming Code)是由贝尔实验室的 Richard Hamming 设计的,是一种利用奇偶校验来检错和纠错的校验方法。方法是在数据位插入 k 个校验位,通过扩大码距来实现检错和纠错。

1. 理论构成

设数据位有 n 位置,校验位有 k 位,则 n 与 k 需要满足关系:2k - 1 ≥ n + k

按照如下规则进行编码:

设 k 个校验位为 Pk,Pk-1,...,P1,n 个数据位为 Dn-1,Dn-2,...,D1,D0,对应的海明码为 Hn+k,Hn+k-1,...,H1,那么:

  • Pi 在海明码的第 2i-1 位置,即 Hj=Pi,且 j=2i-1,数据位则依序从低到高占据海明码中剩下的位置
  • 海明码中任何一位都是由若干个校验位来校验的。其对应关系如下:被校验的海明码的下标等于所有参与校验该位的校验位的下标之和,而校验位由自身校验。

2. 理论设计

对于 8 位的数据位,可计算,其校验位需要 4 个(24 - 1 = 15 ≥ 8 + 4 = 12)。由此可知:

  • 数据位可表示为 D7,D6,...,D0
  • 校验位可表示为 P4,P3,P2,P1
  • 海明码可表示为 H12,H11,...,H1

编码过程如下:

  1. 确定数据位、校验位在海明码中的位置:

海明码位置

  1. 确定校验关系,默认为偶校验(奇校验需要取反即可):

海明码校验关系

  1. 检验错误,对海明码的数据进行差错检查很容易,如下:

海明码差错检查

若采用默认偶检验,则 G4G3G2G1 全为 0 时表示接收到的数据无错误(奇校验全为 1)。当不全为 0 时,可判断发生了错误,而且它的十进制指出了发生错误的位置,如 G4G3G2G1 = 1010,说明 H10(D5) 出错,可将其取反来纠正错误。

3. 实战

假设一个数据为 11001001,可知需要 4 个校验位。数据位如上,现在计算校验位。根据上述说明,使用异或计算可求出相应校验位:

计算校验位

P1 = D0 ⊕ D1 ⊕ D3 ⊕ D4 ⊕ D6 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0
P2 = D0 ⊕ D2 ⊕ D3 ⊕ D5 ⊕ D6 = 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 1
P3 = D1 ⊕ D2 ⊕ D3 ⊕ D7      = 0 ⊕ 0 ⊕ 1 ⊕ 1     = 0
P4 = D4 ⊕ D5 ⊕ D6 ⊕ D7      = 0 ⊕ 0 ⊕ 1 ⊕ 1     = 0

异或求值也可以换一种计算方式,把校验位的 0 替换为 *,写成通配符形式:

通配校验位表

将对应位数的的海明码,写成二进制形式:

海明码位数的二进制

将与通配符匹配的数据写在其下方,可见与异或求值一致:

通配表匹配

纠错计算就是用纠错码与相应位数异或,由于该纠错码就是使用相应位数计算而来,因此值是一样的,所以异或结果必然是 0:

G1 = P1 ⊕ D0 ⊕ D1 ⊕ D3 ⊕ D4 ⊕ D6 = 0 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0
G2 = P2 ⊕ D0 ⊕ D2 ⊕ D3 ⊕ D5 ⊕ D6 = 1 ⊕ 1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 0
G3 = P3 ⊕ D1 ⊕ D2 ⊕ D3 ⊕ D7      = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1     = 0
G4 = P4 ⊕ D4 ⊕ D5 ⊕ D6 ⊕ D7      = 0 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1     = 0

来自 Glett的码字间

标签:校验位,明码,校验,数据位,D6,软件,设计师,D3
From: https://www.cnblogs.com/glett/p/17747771.html

相关文章

  • 软件测评怎么做?首选第三方软件检测机构
    ​ 第三方软件测评机构1.明确测试需求,形成清晰可量化的测试项如甲方信息化建设项目验收测试,一般参考合同签订的内容要求、开发阶段甲方提出的需求更改以及增加需求、最终需要做验收测试报告时与甲方再次核实参考监理单位意见来敲定测试内容。如,政府科技项目验收测试则依照科......
  • LookHandles.exe软件多开窗口修改标题
    当我们针对某个软件进行多开以后,比如我们多开了电脑版微信。此时,使用UI自动化工具是无法准确确定窗口的,因为窗口的名称和类名都一样我们可以使用LookHandles.exe修改窗口名称修改窗口名称LookHandles.exe使用方法LookHandles.exe点住放大镜,移动到想要修改的窗口上,比如微信窗......
  • 如何开发量化交易软件
    量化交易软件是利用程序来实现交易决策的方式软件,它能帮助交易者实现短期内的大量交易,通过觉得和优化实现高效率的盈利,下面就是关于开发量化策略的一些软件需求建议。1.确定交易目标和策略先明确好量化的目标策略,交易目标,盈利点,控制风险,资产配置,交易策略。按照市场的指定规则来交......
  • 量化交易软件开发
    量化交易软件是利用一种数据模型进行交易的方式,通过计算机程序实现自动的交易,量化交易软件实现这一目标是关键词工具,开发和维护也是成为交易领域的重要途径。在开发量化交易软件时,开发人员需要考虑多种的因素,例如市场的数据,交易模型,风险控制,策略优化等。还需要各种的编程语言,构建......
  • 量化交易系统软件是怎么赚钱的
    量化交易系统软件的原理是通过复杂的算法和统计模型计算进行交易的,利用软件赚钱利润。这些软件能快速的分析出大量的数据,包括历史数据,往期数据,其他数据等,软件是发现隐藏在市场趋势的盈利点,预测未来的价格波动变化点。量化交易软件是利用高速计算的算法,在毫秒之间分析得出决策,比人......
  • 水母量化交易系统软件
    水母量化交易系统软件是一款针对交易员而开发的,它具有交易轻松,简单,功能强大,稳定性好的特点。帮助投资者更好的实现管理,实现利益最大化。水母量化交易系统软件的主要功能包括:1.水母交易策略编辑器:交易员自定义软件策略,包括均线,曲线,硬性指标,周边的交易信号等。2.风险控制:软件自动......
  • LookHandles.exe软件多开窗口修改标题
    当我们针对某个软件进行多开以后,比如我们多开了电脑版微信。此时,使用UI自动化工具是无法准确确定窗口的,因为窗口的名称和类名都一样我们可以使用LookHandles.exe修改窗口名称修改窗口名称LookHandles.exe使用方法LookHandles.exe点住放大镜,移动到想要修改的窗口上,比如微信窗口,然......
  • 最高评级!华为云CodeArts Board获信通院软件研发效能度量平台先进级认证
    9月26日,华为云CodeArtsBoard获得了中国信通院《云上软件研发效能度量分级模型》的先进级最高级评估,达到了软件研发效能度量平台评估的通用效能度量能力、组织效能模型、项目效能模型、资源效能模型、个人效能模型、研发效能评价模型、项目管理域、开发域、测试域、运维/运营域的先......
  • lumion中文官网-lumion软件中文版下载 安装包下载方式
    性能特点1、尽量最好地揭示您的修建愿景:种类操控键位是Lumion11的堆积性能。只需按下它,选择一种种类。您会立即获得一个均衡了光线、深入度和实际感的诱人图象。新的天空光日光摹拟器和柔和精美暗影加强。翻开它们,看着树叶和草变得很是传神。看桌子和书架上面的暗影变得奥妙而柔和......
  • 2023年软考-系统架构设计师论文预测
    2023年11月4日软考-系统架构设计师论文预测:微服务:一种云原生架构方法,在单个应用中包含众多松散耦合且可单独部署的小型组件或服务层次风格:数据访问层、业务逻辑层、表示层基于架构的软件开发:ABSD有三个基础,功能拆分、架构风格、使用软件模板。它强调由商业、质量和功能需求的组合驱......