ในส่วนนี้เราจะตรวจสอบว่าตัวเลขมีจำนวนบิตที่ตั้งค่าและบิตที่ยังไม่ได้ตั้งค่าเหมือนกันหรือไม่ สมมติว่ามีหมายเลข 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