การตรวจหาความผิดพลาด ของ แพริตีบิต

ถ้าหากจำนวนบิตที่เป็นเลขคี่ (รวมทั้งแพริตีบิต) เปลี่ยนไปจากปกติในการส่งผ่านกลุ่มบิตข้อมูล แสดงว่าแพริตีบิตนั้นไม่ถูกต้อง และแสดงให้เห็นว่าเกิดความผิดพลาดในการส่งผ่านข้อมูล ดังนั้นแพริตีบิตจึงสามารถใช้เป็นรหัสตรวจหาความผิดพลาด แต่ไม่เป็นรหัสแก้ไขความผิดพลาด เนื่องจากไม่สามารถวิเคราะห์ได้ว่าบิตไหนบ้างที่ข้อมูลผิดไปจากเดิม รู้แต่เพียงว่าเกิดขึ้นเท่านั้น และเมื่อความผิดพลาดเกิดขึ้นแล้ว ข้อมูลทั้งหมดจะต้องถูกละทิ้งและส่งผ่านมาใหม่ตั้งแต่ต้นโดยอัตโนมัติ ถ้าหากสื่อที่ใช้ส่งผ่านมีสัญญาณแทรกซ้อนมาก การส่งผ่านข้อมูลให้สำเร็จจึงอาจต้องใช้ระยะเวลานาน หรือถึงขั้นไม่สำเร็จไปเลย อย่างไรก็ตาม แพริตีบิตก็มีข้อดีตรงที่เป็นรหัสตรวจสอบที่ใช้เนื้อที่เพิ่มเพียงบิตเดียว และใช้เกต XOR เพียงไม่กี่ตัวเพื่อสร้างบิตนั้นขึ้นมา

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

ตัวอย่าง

สมมติว่า A ต้องการส่งข้อมูลขนาดสี่บิตคือ 1001 ไปยัง B กำหนดให้แพริตีบิตอยู่ทางขวา เครื่องหมาย ^ แทนเกต XOR และเครื่องหมาย ~ คือเกต NOT หรือนิเสธ

การส่งผ่านโดยใช้แพริตีบิตคู่ (even)

A ต้องการส่งข้อมูล 1001A คำนวณค่าของแพริตีบิต 1^0^0^1 = 0A เพิ่มแพริตีบิตต่อท้ายและส่งข้อมูล 10010B ได้รับข้อมูล 10010B คำนวณแพริตี 1^0^0^1^0 = 0B รายงานว่าการส่งข้อมูลถูกต้อง เนื่องจากผลลัพธ์เป็นเลขคู่

การส่งผ่านโดยใช้แพริตีบิตคี่ (odd)

A ต้องการส่งข้อมูล 1001A คำนวณค่าของแพริตีบิต ~ (1^0^0^1) = 1A เพิ่มแพริตีบิตต่อท้ายและส่งข้อมูล 10011B ได้รับข้อมูล 10011B คำนวณแพริตี 1^0^0^1^1 = 1B รายงานว่าการส่งข้อมูลถูกต้อง เนื่องจากผลลัพธ์เป็นเลขคี่

กลไกนี้สามารถตรวจหาความผิดพลาดในหนึ่งบิต เพราะหากมีหนึ่งบิตถูกสลับค่าอันเนื่องมาจากสัญญาณแทรกซ้อน จะให้จำนวนของค่า 1 ผิดไปในข้อมูลที่ได้รับ จากสองตัวอย่างข้างต้น B ได้คำนวณค่าแพริตีและพบว่าตรงกับแพริตีบิต แสดงว่าไม่มีหนึ่งบิตใดผิดพลาด ลองพิจารณาตัวอย่างต่อไปนี้ซึ่งมีความผิดพลาด ณ บิตที่สอง ส่งผ่านโดยใช้แพริตีบิตคู่

A ต้องการส่งข้อมูล 1001A คำนวณค่าของแพริตีบิต 1^0^0^1 = 0A เพิ่มแพริตีบิตต่อท้ายและส่งข้อมูล 10010*** เกิดความผิดพลาดระหว่างทาง ***B ได้รับข้อมูล 11010B คำนวณแพริตี 1^1^0^1^0 = 1B รายงานว่าการส่งข้อมูลผิดพลาด เนื่องจากผลลัพธ์เป็นเลขคี่

B คำนวณแพริตีได้ 1 แต่ในแพริตีบิตเป็น 0 จึงแจ้งว่าการส่งผ่านข้อมูลผิดพลาด

ในกรณีแพริตีบิตถูกเปลี่ยนค่าเสียเอง ส่งผ่านโดยใช้แพริตีบิตคู่เช่นกัน

A ต้องการส่งข้อมูล 1001A คำนวณค่าของแพริตีบิต 1^0^0^1 = 0A เพิ่มแพริตีบิตต่อท้ายและส่งข้อมูล 10010*** เกิดความผิดพลาดระหว่างทาง ***B ได้รับข้อมูล 10011B คำนวณแพริตี 1^0^0^1^1 = 1B รายงานว่าการส่งข้อมูลผิดพลาด เนื่องจากผลลัพธ์เป็นเลขคี่

B คำนวณแพริตีได้ 1 แม้จะตรงกับแพริตีบิตที่ส่งมาก็ตาม แต่เงื่อนไขที่กำหนดไว้ในตอนต้นว่าให้ใช้หลักแพริตีบิตคู่ ดังนั้นจึงแจ้งว่าการส่งผ่านข้อมูลผิดพลาด

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

A ต้องการส่งข้อมูล 1001A คำนวณค่าของแพริตีบิต 1^0^0^1 = 0A เพิ่มแพริตีบิตต่อท้ายและส่งข้อมูล 10010*** เกิดความผิดพลาดระหว่างทาง ***B ได้รับข้อมูล 11011B คำนวณแพริตี 1^1^0^1^1 = 0B รายงานว่าการส่งข้อมูลถูกต้อง เนื่องจากผลลัพธ์เป็นเลขคู่ ถึงแม้ข้อมูลจะผิดพลาด

B ซึ่งกำลังสังเกตการณ์แพริตีบิตเป็นเลขคู่ ล้มเหลวในการตรวจหาบิตที่ผิดพลาดสองบิตนั้น

ใกล้เคียง