ในบทความนี้ เราจะพูดถึงโปรแกรมค้นหาความเท่าเทียมกันของตัวเลขที่ระบุ N
ความเท่าเทียมกันถูกกำหนดให้เป็นจำนวนของชุดบิต (จำนวน '1') ในการแทนค่าเลขฐานสองของตัวเลข
หากจำนวน '1' ในการแทนค่าเลขฐานสองเป็นเลขคู่ ความเท่าเทียมกันจะเรียกว่าความเท่าเทียมกัน และหากจำนวน'1'ในการแทนค่าไบนารีเป็นเลขคี่ ความเท่าเทียมกันจะเรียกว่าความเท่าเทียมกันของคี่
หากตัวเลขที่ระบุเป็น N เราสามารถดำเนินการดังต่อไปนี้ได้
- y =N ^ (N>> 1)
- y =y ^ (y>> 2)
- y =y ^ (y>> 4)
- y =y ^ (y>> 8)
- y =y ^ (y>> 16)
เมื่อการดำเนินการทั้งหมดเสร็จสิ้น บิตขวาสุดใน y จะแสดงความเท่าเทียมกันของตัวเลข หากบิตเป็น 1 ความเท่าเทียมกันจะเป็นเลขคี่ และหากบิตเป็น 0 ความเท่าเทียมกันจะเป็นคู่
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; bool calc_parity(int N) { int y; y= N ^ (N >> 1); y = y ^ (y >> 2); y = y ^ (y >> 4); y = y ^ (y >> 8); y = y ^ (y >> 16); //checking the rightmost bit 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