Để tìm nạp các số 1 liên tiếp, hãy sử dụng Toán tử dịch chuyển trái theo chiều dọc. Đây là số thập phân của chúng tôi.
i = (i & (i << 1));
Vòng lặp ở trên cho đến khi giá trị của I là 0 và lấy độ dài bằng cách sử dụng một biến; đếm ở đây.
while (i != 0) {
i = (i & (i << 1));
count++;
} Ví dụ chúng tôi đã lấy ở đây là 150.
Nhị phân cho 150 là 10010110. Do đó, chúng ta có hai giá trị nhị phân liên tiếp.
Ví dụ
using System;
class Demo {
private static int findConsecutive(int i) {
int count = 0;
while (i != 0) {
i = (i & (i < 1));
count++;
}
return count;
}
// Driver code
public static void Main() {
// Binary or 150 is 10010110
Console.WriteLine(findConsecutive(150));
}
} Đầu ra
2