ที่นี่เราจะดูว่าถ้าตัวเลขมีบิตชุดที่อยู่ติดกันในการแทนค่าไบนารี สมมติว่าหมายเลข 12 มี 1 วินาทีติดต่อกัน (12 =1100)
ในการตรวจสอบตัวเลขประเภทนี้ แนวคิดนั้นง่ายมาก เราจะเลื่อนตัวเลข 1 บิตแล้วทำระดับบิต AND หากผลลัพธ์ระดับบิตและไม่ใช่ศูนย์ จะต้องมี 1 วินาทีที่ต่อเนื่องกัน
ตัวอย่าง
#include <iostream>
using namespace std;
bool hasConsecutiveOnes(int n) {
if((n & (n >> 1)) == 1){
return true;
}else{
return false;
}
}
int main() {
int num = 67; //1000011
if(hasConsecutiveOnes(num)){
cout << "Has Consecutive 1s";
}else{
cout << "Has No Consecutive 1s";
}
} ผลลัพธ์
Has Consecutive 1s