Tính chẵn lẻ của một số dựa trên số lượng 1 có trong tương đương nhị phân của số đó. Khi số lượng 1s hiện tại là số lẻ, nó trả về chẵn lẻ lẻ, đối với số lượng 1s chẵn thì trả về chẵn lẻ.
Như chúng ta biết rằng các số trong bộ nhớ máy tính được lưu trữ dưới dạng số nhị phân, vì vậy chúng ta có thể chuyển số một cách dễ dàng. Trong trường hợp này, bằng cách dịch chuyển các bit, chúng tôi sẽ đếm số 1 có mặt trong số tương đương nhị phân của số đã cho.
Đầu vào và Đầu ra
Input: A number: 5 Binary equivalent is (101) Output: Parity of 5 is Odd.
Thuật toán
finParity(n)
Đầu vào: Số n.
Đầu ra: Kiểm tra số có chẵn lẻ hay chẵn lẻ.
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
Ví dụ
#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"); }
Đầu ra
Enter a number: 5 Parity of 5 is Odd