Parity (ความเป็นคู่คี่) = จำนวนบิต 1 ในการแทนค่าทศนิยมเป็นเลขฐานสอง
- จำนวนบิต 1 เป็นเลขคู่ → Even Parity
- จำนวนบิต 1 เป็นเลขคี่ → Odd Parity
วิธีคำนวณเร็ว (Bitwise operations):
y = N ^ (N >> 1) y = y ^ (y >> 2) y = y ^ (y >> 4) y = y ^ (y >> 8) y = y ^ (y >> 16)
บิตขวาสุดของ y = parity (1 = odd, 0 = even)
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
bool calc_parity(int N) {
int y = N ^ (N >> 1);
y = y ^ (y >> 2);
y = y ^ (y >> 4);
y = y ^ (y >> 8);
y = y ^ (y >> 16);
if (y & 1) return 1;
return 0;
}
int main() {
int n = 1345;
int result = calc_parity(n);
if (result == 1) cout << "Odd Parity" << endl;
else cout << "Even Parity" << endl;
return 0;
}
ผลลัพธ์
Even Parity