Ở đâ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