ในส่วนนี้เราจะมาดูวิธีการตรวจเช็คตัวเลขว่ากระจัดกระจายหรือไม่ ตัวเลขจะเบาบางถ้าการแทนค่าเลขฐานสองของตัวเลขนั้น มี 1 วินาทีติดต่อกันไม่เกินสองหรือมากกว่า สมมติว่าตัวเลขเช่น 72 นี่คือ 01001000 ในที่นี้ไม่มี 1 วินาทีหรือมากกว่าติดต่อกัน
ในการตรวจสอบตัวเลขเบาบางหรือไม่ เราจะนำตัวเลขนั้นมาเป็น n จากนั้นเลื่อนตัวเลขนั้นไปทางขวาหนึ่งบิต แล้วดำเนินการระดับบิต AND หากผลลัพธ์เป็น 0 แสดงว่าเป็นจำนวนเบาบาง ไม่เช่นนั้นก็ไม่ใช่
ตัวอย่าง
#include <iostream> using namespace std; bool isSparseNumber(int n) { int res = n & (n >> 1); if(res == 0) return true; return false; } int main() { int num = 72; if(isSparseNumber(num)){ cout << "This is sparse number"; } else { cout << "This is not sparse number"; } }
ผลลัพธ์
This is sparse number