Ψηφίο Ισοτιμίας (Parity Bit)
Το ψηφίο ισοτιμίας είναι το πιο απλό σύστημα ανίχνευσης σφαλμάτων: ένα επιπλέον bit που προστίθεται σε κάθε μήνυμα ώστε ο δέκτης να μπορεί να εντοπίσει αν ένα bit αλλοιώθηκε κατά τη μετάδοση.
Γιατί χρειαζόμαστε parity;
Όταν στέλνεις δεδομένα μέσω καλωδίου ή ασύρματα, μπορεί να συμβούν λάθη: ηλεκτρομαγνητικός θόρυβος, παρεμβολές, παροδικές αλλοιώσεις. Ένα bit μπορεί να αλλάξει από 0 σε 1 (ή αντίστροφα), και ο δέκτης δεν θα το ξέρει.
Το ψηφίο ισοτιμίας προστίθεται στο μήνυμα ώστε ο συνολικός αριθμός των 1 να ακολουθεί έναν προκαθορισμένο κανόνα. Αν ο δέκτης δει ότι ο κανόνας παραβιάζεται, ξέρει ότι κάτι πήγε στραβά.
Ο Ορισμός
Το ψηφίο ισοτιμίας (parity bit) είναι ένα επιπρόσθετο bit στον κώδικα δεδομένων, έτσι ώστε ο συνολικός αριθμός των 1 (μαζί με το parity bit) να είναι πάντοτε:
- ζυγός αριθμός (even parity), ή
- μονός αριθμός (odd parity)
Το parity bit υπολογίζεται με XOR (αποκλειστικό ή) όλων των bits του δεδομένου. Το XOR είναι 1 όταν ο αριθμός των 1 είναι περιττός.
Άρτιο vs Περιττό Parity
Γεννήτρια Άρτιας Ισοτιμίας
Ο αριθμός των 1 (μαζί με το P) θα είναι πάντα ζυγός. Αν τα bits έχουν περιττό πλήθος 1, το P=1 (για να γίνει το σύνολο ζυγό). Αν τα bits έχουν ζυγό πλήθος 1, το P=0.
Γεννήτρια Περιττής Ισοτιμίας
Στην περιττή ισοτιμία (odd parity), το συμπλήρωμα του παραπάνω αποτελέσματος. Δηλαδή ο αριθμός των 1 (μαζί με το P) θα είναι πάντα περιττός.
Παράδειγμα
Για το δεκαδικό 5 (BCD = 0101):
- Αριθμός 1 στα bits: 2 (ζυγός)
- Even parity: P = 0 (γιατί ήδη είναι ζυγός)
- Odd parity: P = 1 (για να γίνει περιττός)
Διαδραστικό: Parity Generator
Δες πώς υπολογίζεται το P
Πάτα τα bits A₃A₂A₁A₀ για να φτιάξεις έναν 4-bit αριθμό. Επίλεξε άρτια ή περιττή ισοτιμία και δες ζωντανά να υπολογίζεται το parity bit P. Το βήμα-βήμα XOR εξηγεί κάθε υπολογισμό.
Δεδομένα (A)
Ολόκληρος κώδικας προς μετάδοση
Έλεγχος Ισοτιμίας
Στον δέκτη, ένα κύκλωμα ελέγχου εφαρμόζει XOR σε όλα τα bits μαζί με το parity:
- Για άρτια ισοτιμία:
C = 0σημαίνει OK,C = 1σημαίνει σφάλμα. - Για περιττή ισοτιμία:
C = 1σημαίνει OK,C = 0σημαίνει σφάλμα.
Διαδραστικό: Parity Checker (Πομπός → Δέκτης)
Παίξε τον ρόλο του θορύβου
Ο πομπός στέλνει 4-bit δεδομένα + parity. Πάτα ένα bit στον δίαυλο μετάδοσης για να προσομοιώσεις θόρυβο που το αλλάζει! Δες αν ο δέκτης θα ανιχνεύσει το σφάλμα.
📡 Πομπός — Αποστολή
🔌 Δίαυλος (Channel)
📥 Δέκτης — Λήψη & Έλεγχος
Πίνακας Parity για BCD
Ο παρακάτω πίνακας δείχνει το parity bit για όλους τους αριθμούς 0-15 σε δυαδική μορφή. Πατώντας έναν αριθμό, μπορείς να δεις τον υπολογισμό.
Διαδραστικό: Πίνακας Parity 0-15
Δες τον υπολογισμό για κάθε τιμή
Πάτα οποιοδήποτε κελί στον πίνακα για να δεις τον αναλυτικό υπολογισμό του parity bit για αυτή την τιμή.
Περιορισμοί & Εξελίξεις
Το parity bit ανιχνεύει μόνο μονό αριθμό σφαλμάτων (1, 3, 5...). Αν αλλοιωθούν 2 bits ταυτόχρονα, ο έλεγχος ισοτιμίας θα δείξει "OK" ενώ τα δεδομένα είναι λάθος! Επίσης, δεν μπορεί να διορθώσει το σφάλμα, μόνο να το ανιχνεύσει.
Πιο εξελιγμένα συστήματα:
- Hamming Code: Μπορεί να ανιχνεύσει και να διορθώσει σφάλματα 1 bit.
- CRC (Cyclic Redundancy Check): Πιο ισχυρή ανίχνευση πολλαπλών σφαλμάτων.
- Reed-Solomon: Διόρθωση πολλαπλών σφαλμάτων (CDs, DVDs, QR codes).
Πού χρησιμοποιείται το parity:
- Σειριακή επικοινωνία (RS-232, UART)
- Μνήμες RAM (parity RAM, ECC RAM)
- Σκληροί δίσκοι (RAID 5)
- SCSI και άλλα παλιότερα πρωτόκολλα