ความเท่าเทียมกันของตัวเลขขึ้นอยู่กับจำนวน 1 ที่มีอยู่ในเลขฐานสองของตัวเลขนั้น เมื่อการนับ 1s ปัจจุบันเป็นเลขคี่ จะส่งกลับค่าความเท่าเทียมกันของคี่ สำหรับจำนวนคู่ที่ 1 จะคืนค่าความเท่าเทียมกัน
อย่างที่เราทราบดีว่าตัวเลขในหน่วยความจำของคอมพิวเตอร์นั้นถูกจัดเก็บเป็นเลขฐานสอง เราจึงสามารถเปลี่ยนตัวเลขได้อย่างง่ายดาย ในกรณีนี้ โดยการขยับบิต เราจะนับจำนวน 1 ที่มีอยู่ในเลขฐานสองของตัวเลขที่ระบุ
อินพุตและเอาต์พุต
Input: A number: 5 Binary equivalent is (101) Output: Parity of 5 is Odd.
อัลกอริทึม
finParity(n)
ป้อนข้อมูล: หมายเลข n.
ผลลัพธ์: ตรวจสอบว่าตัวเลขมีความเท่าเทียมกันหรือความเท่าเทียมกันของคี่
Begin count := 0 temp := n while temp >= 2, do if temp has 1 as LSb, then count := count + 1 temp := right shift temp for 1 bit done if count is odd number, then display it is odd parity else display even parity End
ตัวอย่าง
#include <iostream> using namespace std; bool findParity(int n) { int count = 0; int temp = n; while (temp>=2) { if(temp & 1) //when LSb is 1, increase count count++; temp = temp >> 1; //right shift number by 1 bit } return (count % 2)?true:false; } int main() { int n; cout << "Enter a number: "; cin >>n; cout << "Parity of " << n << " is " << (findParity(n)?"Odd":"Even"); }
ผลลัพธ์
Enter a number: 5 Parity of 5 is Odd