이 섹션에서는 숫자가 동일한 수의 설정 비트와 설정되지 않은 비트를 갖는지 여부를 확인합니다. 숫자 12가 있다고 가정합니다. 바이너리 표현은 1100입니다. 이것은 0과 1의 수가 같습니다.
접근 방식은 간단합니다. 숫자의 각 비트를 확인하고 1이면 set_bit_count를 늘리고 0이면 unset_bit_count를 늘립니다. 마지막으로 동일하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
예시
#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