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

C++의 이진 표현에서 0과 1의 XOR 카운트

<시간/>

이 문제에서는 숫자가 주어집니다. 우리의 임무는 숫자의 이진 표현에서 0과 1의 개수에 대한 XOR을 찾는 것입니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

n = 9

출력

0

설명

binary = 1001
Count of 0s = 2
Count of 1s = 2
2 ^ 2 = 0

이 문제를 해결하기 위해 먼저 해당하는 2진수의 수를 변환한 다음 숫자의 각 비트를 반복하고 0과 1을 카운트한 다음 0의 카운트와 1의 카운트의 XOR을 찾습니다.

위의 솔루션을 설명하는 프로그램,

예시

#include<iostream>
using namespace std;
int countXOR10(int n) {
   int count0s = 0, count1s = 0;
   while (n){
      (n % 2 == 0) ? count0s++ :count1s++;
      n /= 2;
   }
   return (count0s ^ count1s);
}
int main() {
   int n = 21;
   cout<<"XOR of count of 0s and 1s in binary of "<<n<<" is "<<countXOR10(n);
   return 0;
}

출력

XOR of count of 0s and 1s in binary of 21 is 1