Нахождение двух последовательных 1 в цепочке битов менее чем за n раз?
Я пытаюсь найти способ узнать, есть ли у цепочки битов 2 последовательные строки размером n, менее чем за n раз.
Например, допустим, у нас был размер цепочки 5 (индекс 0-4). Если бы индексы 1 и 3 были 0, я мог бы вернуть false. Но если бы они оба были одинаковыми, мне, возможно, пришлось бы сделать 5 попыток, чтобы найти ответ.
Битовая строка не обязательно должна быть длиной 5. Для простоты предположим, что она может быть между 3 и 8.
1 ответ
Самое простое решение может быть побитовым AND
исходная строка с ее версией, которая была сдвинута влево или вправо на 1 бит. Если полученная битовая строка отлична от нуля, то у вас есть хотя бы один 11
там:
test = (src & (src << 1));