এই বিভাগে আমরা একটি সংখ্যার সেট বিট এবং আনসেট বিটগুলির একই সংখ্যা আছে কিনা তা পরীক্ষা করব। ধরুন 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