Я хочу найти позиции битов, которые точно установлены дважды для всех битовых полей. p>
например:
Код: Выделить всё
0.1111.1111
0.0000.1101
0.0001.1101
0.0001.1101
0.0010.1101
0.0010.1101
0.0100.1101
0.0100.1101
0.0000.0010
В первый раз в первом битовом поле второй раз в последнем битовом поле.
В настоящее время я выполняю «позиционный подсчет населения» для целых чисел.
для каждого возможного битового поля есть 512, У меня есть соответствующая длинная битовая маска,
которая используется для подсчета частоты установленных битовых позиций.
Код: Выделить всё
0.0100.1101 -> 0000.0000.0001.0000.0000.0001.0001.0000.0001Таким образом, первые 4 младших бита суммы представляют собой частоту, установленный бит 0.Вторые 4 бита обозначают частоту, установленную в бите 1.
И так далее, поэтому я могу сканировать частоту 2.
Это работает, но это не так. так быстро, как я надеялся.
Существует ли более быстрый алгоритм, который я могу реализовать на Java?
Мне не нужно знать все позиции битов. при частоте 2 достаточно одной битовой позиции.
Подробнее здесь: https://stackoverflow.com/questions/787 ... bit-fields
Мобильная версия