Нахождение двух последовательных 1 в цепочке битов менее чем за n раз?

Я пытаюсь найти способ узнать, есть ли у цепочки битов 2 последовательные строки размером n, менее чем за n раз.

Например, допустим, у нас был размер цепочки 5 (индекс 0-4). Если бы индексы 1 и 3 были 0, я мог бы вернуть false. Но если бы они оба были одинаковыми, мне, возможно, пришлось бы сделать 5 попыток, чтобы найти ответ.

Битовая строка не обязательно должна быть длиной 5. Для простоты предположим, что она может быть между 3 и 8.

1 ответ

Самое простое решение может быть побитовым AND исходная строка с ее версией, которая была сдвинута влево или вправо на 1 бит. Если полученная битовая строка отлична от нуля, то у вас есть хотя бы один 11 там:

test = (src & (src << 1));
Другие вопросы по тегам