เนื้อหา
รหัส Hamming ใช้เพื่อแทรกข้อมูลการแก้ไขข้อผิดพลาดลงในสตรีมข้อมูล รหัสได้รับการออกแบบมาเพื่อให้ไม่เพียงตรวจพบข้อผิดพลาดเท่านั้น แต่ยังได้รับการแก้ไขด้วย การเพิ่มข้อมูลการแก้ไขข้อผิดพลาดจะเพิ่มปริมาณข้อมูล แต่ยังเพิ่มความน่าเชื่อถือของการสื่อสารผ่านสื่อที่มีอัตราความผิดพลาดสูง
การเข้ารหัส Hamming อาจมีความซับซ้อนในการนำไปใช้ แต่สามารถทำได้อย่างรวดเร็วโดยใช้เทคนิคการคำนวณระดับบิต สิ่งนี้ช่วยให้สามารถสร้างระบบแก้ไขข้อผิดพลาดที่มีประโยชน์และความเร็วสูงเพื่อใช้ในแอปพลิเคชันแบบฝัง
ขั้นตอนที่ 1
สร้างคำข้อมูล บิตใด ๆ ที่มีตำแหน่งที่เป็นเลขยกกำลังสอง (ตัวแรกวินาทีที่สี่ ฯลฯ ) จะต้องถูกสงวนไว้สำหรับข้อมูลพาริตี ใช้ตราบเท่าที่จำเป็นเพื่อให้คำมีข้อมูลต้นฉบับและพาริตีบิต
ตัวอย่าง:
1 1 0 1 0 0 1 0 กลายเป็น _ _ 1 _ 1 0 1 _ 0 0 1 0
บิตดั้งเดิมยังคงอยู่ในลำดับเดิม แต่ถูกกระจายออกเพื่อแทรกพาริตีบิต
ขั้นตอนที่ 2
คำนวณพาริตีบิตแรก เริ่มต้นด้วยบิตแรกบิตจะถูกอ่านจากนั้นข้ามไปเล็กน้อยและทำซ้ำขั้นตอนจนจบ ในระหว่างนี้จำนวนคนที่พบจะถูกนับ ไม่นับพาริตีบิตในกระบวนการนี้
หากมีจำนวนเท่ากันให้ตั้งค่าบิตแรกเป็นศูนย์ มิฉะนั้นให้ตั้งค่าเป็นหนึ่ง
ตัวอย่าง:
บิต 1, 3, 5, 7, 9 และ 11 ของ _ _ 1 _ 1 0 1 _ 0 0 1 0, _11101 มีสี่ตัว นี่เป็นจำนวนเท่ากันดังนั้นบิตแรกจึงถูกตั้งค่าเป็นศูนย์: 0 _ 1 _ 1 0 1 _ 0 0 1 0
ขั้นตอนที่ 3
คำนวณพาริตีบิตที่เหลือ เริ่มต้นด้วยบิตที่สองมีการอ่านสองบิตจากนั้นจะข้ามสองบิตและทำซ้ำขั้นตอนจนจบ บิตที่สี่อ่านสี่บิตข้ามอีกสี่บิตเริ่มต้นด้วยบิตสี่ รูปแบบเดียวกันตามด้วยพาริตีบิตทั้งหมดจนกว่าจะคำนวณทั้งหมด
ตัวอย่าง:
บิต 2: 0 _ 1 _ 1 0 1 _ 0 0 1 0 ตรวจสอบ _1, 01, 01 ซึ่งมีสามตัวดังนั้นบิต 2 จึงถูกตั้งค่าเป็นหนึ่ง บิต 4: _ 0 1 1 1 0 1 _ 0 0 1 0 ตรวจสอบ _101, 0 ซึ่งมีสองรายการดังนั้นบิต 4 จึงถูกตั้งค่าเป็นศูนย์ บิต 8: 0 1 1 0 1 0 1 _ 0 0 1 0 ตรวจสอบ _0010 ซึ่งมีเพียงหนึ่งบิต 8 จึงถูกตั้งค่าเป็นหนึ่ง
คำนี้จึงมีรหัสเป็น 011010110010
ขั้นตอนที่ 4
ยืนยันคำ หากคำเสียหายพาริตีบิตจะไม่ตรงกับที่คาดไว้ เพื่อยืนยันว่าคำนั้นไม่เสียหายเพียงแค่คำนวณพาริตีบิตโดยใช้ขั้นตอนที่สองและสาม หากบิตไม่เหมือนกันให้บันทึกตำแหน่ง
ขั้นตอนที่ 5
แก้ไขบิตที่ผิด หากคุณพบพาริตีบิตไม่ถูกต้องให้เพิ่มตำแหน่งของบิต ค่าผลรวมคือตำแหน่งของบิตที่ไม่ถูกต้อง เปลี่ยนค่าบิตในตำแหน่งนี้
ตัวอย่างเช่นหากพาริตีบิตที่ไม่ถูกต้องเป็นหนึ่งและสี่การเปลี่ยนค่าของบิตที่ห้าจะแก้ไขข้อผิดพลาด