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

โปรแกรม C++ หาค่า Parity ของตัวเลขอย่างมีประสิทธิภาพ


ในบทความนี้ เราจะพูดถึงโปรแกรมค้นหาความเท่าเทียมกันของตัวเลขที่ระบุ 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