Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

การตรวจสอบความเท่าเทียมกันของตัวเลข


ความเท่าเทียมกันของตัวเลขขึ้นอยู่กับจำนวน 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