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

XOR นับ 0s และ 1s ในการแทนค่าไบนารีใน C++


ในปัญหานี้ เราได้รับตัวเลข งานของเราคือค้นหา XOR ของการนับ 0 และ 1 ในการแทนค่าเลขฐานสองของตัวเลข

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

อินพุต

n = 9

ผลลัพธ์

0

คำอธิบาย

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

ในการแก้ปัญหานี้ ก่อนอื่นเราจะแปลงจำนวนเลขฐานสองที่เทียบเท่ากัน จากนั้นวนซ้ำในแต่ละบิตของตัวเลข นับ 0 และ 1 แล้วหา XOR ของการนับ 0 และนับ 1

โปรแกรมเพื่อแสดงวิธีแก้ปัญหาข้างต้น

ตัวอย่าง

#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