วิธีคำนวณโค้ด Hamming

ผู้เขียน: Rachel Coleman
วันที่สร้าง: 27 มกราคม 2021
วันที่อัปเดต: 22 พฤศจิกายน 2024
Anonim
Hamming Distance & Hamming Code Calculation
วิดีโอ: Hamming Distance & Hamming Code Calculation

เนื้อหา

รหัส 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

แก้ไขบิตที่ผิด หากคุณพบพาริตีบิตไม่ถูกต้องให้เพิ่มตำแหน่งของบิต ค่าผลรวมคือตำแหน่งของบิตที่ไม่ถูกต้อง เปลี่ยนค่าบิตในตำแหน่งนี้

ตัวอย่างเช่นหากพาริตีบิตที่ไม่ถูกต้องเป็นหนึ่งและสี่การเปลี่ยนค่าของบิตที่ห้าจะแก้ไขข้อผิดพลาด