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