Parite (eşlik) biti en basit hata sezme tekniklerinden birisidir. Binary veri dizisindeki 1’ lerin sayısının tek veya çift olmasına göre verinin sonuna bir parite biti eklenir. Verideki 1’ lerin sayısının çift olmasına çift eşlik, tek olmasına da tek eşlik durumu denir.
Parite biti bir iletişim hattında taşınan verinin güvenliği için kullanılabilir. Gönderici tarafından veri dizisinin sonuna parite biti eklenir. Alıcı ise aldığı veri dizisindeki parite kontrolü yapar ve parite bitinde hata tespit ederse verinin iletim sırasında bozulduğunu varsayarak veriyi göndericiden tekrar talep eder. Parite biti tekniği güvenirliği düşük ancak hızlı bir hata sezme tekniğidir.
/* Parite hesaplaması www.hbmacit.com*/ #include<iostream> using namespace std; int main() { unsigned boyut; // Binary dizinin boyutu cout<<"Binary dizinin boyutunu giriniz: "; cin>>boyut; bool *BinaryDizi; // Dinamik dizi oluştur. BinaryDizi = new bool[boyut+1]; // +1: parite biti olacak for (int i = 0; i< boyut; i++) // Dizinin elemanlarını kullanıcıdan iste { cout<<"Binary dizinin "<<i+1<<". elemanını giriniz: "; cin>>BinaryDizi[i]; } bool parite = 0; // Parite bitini geçici olarak 0' a eşitle for (int i = 0; i< boyut; i++) // Parite bitini hesapla { if ((parite == 0) && (BinaryDizi[i] == 1)) parite = 1; else if ((parite == 1) && (BinaryDizi[i] == 1)) parite = 0; } BinaryDizi[boyut] = parite; // Parite bitini dizinin son hücresine yaz cout<<endl<<"Hesaplanan parite biti: "<<parite<<endl; cout<<"Binary dizinin parite biti eklenmiş hâli: "; for (int i = 0; i<boyut+1; i++) { cout<<BinaryDizi[i]; } delete BinaryDizi; // Dinamik diziyi bellekten sil return 0; }
Program çalıştığında, 8 bitlik 10101001 verisi girilmiş ve aşağıdaki ekran çıktısı elde edilmiştir.
Aşağıdaki C++ kodu ile kullanıcı tarafından girilen ve son elemanı parite biti olan binary dizinin (BinaryDizi) parite kontrolü yapılmaktadır.
/* Parite kontrolü www.hbmacit.com*/ #include<iostream> using namespace std; int main() { unsigned boyut; // Binary dizinin boyutu cout<<"Parite biti dahil binary dizinin boyutunu giriniz: "; cin>>boyut; bool *BinaryDizi; // Dinamik dizi oluştur. BinaryDizi = new bool[boyut]; for (int i = 0; i< boyut; i++) // Dizinin elemanlarını kullanıcıdan iste { cout<<"Binary dizinin "<<i+1<<". elemanını giriniz: "; cin>>BinaryDizi[i]; } cout<<"Son eleman parite biti olarak hesaplanacaktır."<<endl; bool parite = 0; // Parite bitini geçici olarak 0' a eşitle for (int i = 0; i< boyut; i++) // Parite bitini hesapla { if ((parite == 0) && (BinaryDizi[i] == 1)) parite = 1; else if ((parite == 1) && (BinaryDizi[i] == 1)) parite = 0; } if (parite == BinaryDizi[boyut]) // Hesaplanan parite ile dizideki parite bitini karşılaştır cout<<"Parite biti doğru."; else cout<<"Parite biti hatalı."; delete BinaryDizi; // Dinamik diziyi bellekten sil return 0; }
Parite kontrolü programı çalıştırılarak 8 bitlik 10101001 binary verisi ve doğru parite biti girildiğinde aşağıdaki ekran çıktısı elde edilmiştir.
Aynı binary dizisi için hatalı parite biti girildiğinde aşağıdaki ekran çıktısı elde edilmiştir.