Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาความเป็นคู่คี่ (Parity) ของตัวเลขอย่างมีประสิทธิภาพ


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