Нахождение двух последовательных 1 в цепочке битов менее чем за n раз? - PullRequest
4 голосов
/ 04 ноября 2010

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

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

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

1 Ответ

15 голосов
/ 04 ноября 2010

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

test = (src & (src << 1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...