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