学习目标:掌握软考海明码核心考点,能区分数据位n和校验位r、套用公式求校验位r、完成海明码排位、计算校验位、拼出完整海明码,适配软考真题难度。
学习轨迹:从混淆n和r → 能准确识别n/r → 会套公式求r → 能独立完成海明码完整计算,逐步进阶,全程贴合软考考点,无复杂原理,只记实用套路。
一、初始阶段:混淆数据位(n)和校验位(r)
1. 核心困惑
不清楚n和r的定义,做题时容易混淆,看到题目就凭感觉瞎猜r的数值,无法准确区分“原始数据”和“额外校验位”。
2. 关键区分(彻底吃透)
n(数据位):原始要传输的有效二进制位数,也就是“真正要传的正文/信息”,题目中常表述为“数据位、有效信息位、原始数据位”。
r(校验位):为了实现检错、纠错,额外添加的冗余位,题目中常表述为“校验位、冗余位、纠错位”。
3. 生活化类比(辅助记忆)
假设要发送8个字(原始信息),这8个字就是n;为了防止写错,额外加4个检查标记,这4个标记就是r。n是“本来就有”的,r是“额外添加”的。
4. 专项练习(纠正混淆)
核心规则:题目没给r、没让求r,就只写n,不许自己瞎算r;题目直接给r,就如实填写。
经过多轮纯识别练习(共10道),逐步养成“先认n,再看r”的习惯,彻底分清两者定义,不再混淆。
二、进阶阶段:套用公式求校验位r(软考必考)
1. 核心公式(唯一必背)
海明码校验位个数计算公式:
n:已知的数据位个数(题目直接给出)
r:需要求的最小校验位个数
计算方法:从r=1、2、3...依次代入公式,第一个满足不等式的r,就是最小校验位个数。
2. 错题纠正(关键突破)
初始练习时,容易凭感觉蒙r的值(如n=4时猜r=2),忽略“代入公式验算”的步骤,导致错误。经过针对性纠错,掌握“逐一代入、验证不等式”的核心套路。
3. 经典例题演练(掌握套路)
例1:n=4 → 试r=2(4≥7不成立),r=3(8≥8成立)→ r=3
例2:n=8 → 试r=3(8≥12不成立),r=4(16≥13成立)→ r=4
例3:n=6 → 试r=2(4≥9不成立),r=3(8≥10不成立),r=4(16≥11成立)→ r=4
例4:n=3 → r=3(8≥7成立)
例5:n=5 → r=4(16≥10成立)
例6:n=12 → r=5(32≥18成立)
经过3轮练习(共6道题),能熟练套用公式,准确求出最小r,不再凭感觉猜测。
三、熟练阶段:完整计算海明码(软考真题实操)
1. 核心铁律(死记不变,软考通用)
校验位P的固定位置:第
号位,即1、2、4、8、16...号位。
软考默认校验方式:偶校验(一组数据中,1的个数为偶数)。
校验位管辖范围(固定不变):
P1(1号位):管辖1、3、5、7号位
P2(2号位):管辖2、3、6、7号位
P3(4号位):管辖4、5、6、7号位
2. 分步教学(跟着练会)
例题:原始数据1011(n=4),计算完整海明码。
求r:代入公式,r=3(8≥8成立),总位数n+r=7位。
排位:1、2、4号位放P1、P2、P3,3、5、6、7号位填数据1、0、1、1。
算校验位(偶校验):
P1:管辖1、3、5、7 → 3=1、5=0、7=1(1的个数=2,偶数)→ P1=0
P2:管辖2、3、6、7 → 3=1、6=1、7=1(1的个数=3,奇数)→ P2=1
P3:管辖4、5、6、7 → 5=0、6=1、7=1(1的个数=2,偶数)→ P3=0
拼海明码:按1-7号位顺序,拼接为0110011。
3. 复刻练习(巩固套路)
例题:原始数据1101(n=4),独立完成计算。
求r:r=3,总位数7位。
排位:1=P1、2=P2、3=1、4=P3、5=1、6=0、7=1。
算校验位:
P1:3=1、5=1、7=1(1的个数=3,奇数)→ P1=1
P2:3=1、6=0、7=1(1的个数=2,偶数)→ P2=0
P3:5=1、6=0、7=1(1的个数=2,偶数)→ P3=0
完整海明码:1010101。
4. 独立实操(检验成果)
练习题:原始数据1001(n=4),独立完成全流程计算,结果正确。
求r:r=3 ✅
排位:1=P1、2=P2、3=1、4=P3、5=0、6=0、7=1 ✅
算校验位:P1=0、P2=0、P3=1 ✅
完整海明码:0011001 ✅
四、学习总结(软考必背重点)
区分n和r:n是原始数据位,r是额外校验位,没让求r就不瞎算。
求r公式:
,逐一代入验证,找最小r。
海明码排位:P1→1、P2→2、P3→4,其余位置填数据。
校验位计算:偶校验,按固定管辖范围,凑1的个数为偶数。
最终成果:能独立完成“求r→排位→算校验位→拼海明码”全流程,适配软考真题难度。
最终的海明码就类似这样的: