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

ตรวจสอบว่าตัวเลขมีจำนวน set และ unset bits เท่ากันใน C++ . หรือไม่


ในส่วนนี้เราจะตรวจสอบว่าตัวเลขมีจำนวนบิตที่ตั้งค่าและบิตที่ยังไม่ได้ตั้งค่าเหมือนกันหรือไม่ สมมติว่ามีหมายเลข 12 อยู่ที่นั่น การแทนค่าไบนารีของมันคือ 1100 ซึ่งมีจำนวน 0 และ 1 เท่ากัน

วิธีการนั้นง่าย เราจะตรวจสอบแต่ละบิตของตัวเลข และหากเป็น 1 ให้เพิ่ม set_bit_count และหากเป็น 0 ให้เพิ่ม unset_bit_count สุดท้าย หากเหมือนกัน ให้คืนค่า จริง มิฉะนั้น เท็จ

ตัวอย่าง

#include <iostream>
using namespace std;
bool hasSameSetUnset(int n) {
   int set_count = 0, unset_count = 0;
   while(n){
      if((n & 1) == 1){
         set_count++;
      }else{
         unset_count++;
      }
      n = n >> 1; //shift to right
   }
   if(set_count == unset_count)
   return true;
   return false;
}
int main() {
   int num = 35; //100011
   if(hasSameSetUnset(num)){
      cout << "Has same set, unset bits";
   }else{
      cout << "Not same number of set, unset bits";
   }
}

ผลลัพธ์

Has same set, unset bits