Ở đây chúng ta sẽ thấy, nếu một số có các bit đặt liền kề trong biểu diễn nhị phân của nó. Giả sử số 12 có hai số 1 liên tiếp (12 =1100).
Để kiểm tra loại số này, ý tưởng rất đơn giản. Chúng tôi sẽ chuyển số 1 bit, sau đó thực hiện theo chiều dọc bit AND. Nếu kết quả theo bitwise AND khác 0, thì phải có một số số 1 liên tiếp.
Ví dụ
#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";
}
} Đầu ra
Has Consecutive 1s