Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่าตัวเลขมีชุดบิตที่อยู่ติดกันสองบิตใน C++ . หรือไม่


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