Computer >> Máy Tính >  >> Lập trình >> Lập trình

Kiểm tra tính chẵn lẻ của một số


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