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

Kiểm tra xem một số có cùng số bit đã đặt và chưa đặt trong C ++ hay không

Trong phần này, chúng ta sẽ kiểm tra xem một số có cùng số bit đặt và bit chưa đặt hay không. Giả sử số 12 ở đó. Biểu diễn nhị phân của nó là 1100. Số này có cùng số 0 và 1.

Cách tiếp cận rất đơn giản. Chúng tôi sẽ kiểm tra từng bit của số, và nếu đó là 1, thì hãy tăng set_bit_count và nếu nó là 0, thì hãy tăng unset_bit_count. Cuối cùng, nếu chúng giống nhau, thì trả về true, ngược lại là false.

Ví dụ

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

Đầu ra

Has same set, unset bits