Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

숫자의 패리티를 효율적으로 찾는 C++ 프로그램

<시간/>

이 기사에서는 주어진 숫자 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