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