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

XOR đếm số 0 và 1 trong biểu diễn nhị phân trong C ++

Trong bài toán này, chúng ta được đưa ra một con số. Nhiệm vụ của chúng tôi là tìm XOR của số lượng 0 và 1 trong biểu diễn nhị phân của số.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

n = 9

Đầu ra

0

Giải thích

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

Để giải quyết vấn đề này, trước tiên chúng ta sẽ chuyển đổi số tương đương nhị phân của nó và sau đó lặp lại từng bit của số, đếm 0 và 1, sau đó tìm XOR của số 0 và đếm 1.

Chương trình minh họa giải pháp trên,

Ví dụ

#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;
}

Đầu ra

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