Найти позиции битов, которые точно установлены дважды в нескольких битовых поляхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Найти позиции битов, которые точно установлены дважды в нескольких битовых полях

Сообщение Anonymous »

У меня 9 битовых полей, каждое битовое поле имеет 9 девяти бит, 9 младших битов целого числа.
Я хочу найти позиции битов, которые точно установлены дважды для всех битовых полей. 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
В этом примере это битовая позиция 1, потому что в этой позиции 1 устанавливается ровно два раза.
В первый раз в первом битовом поле второй раз в последнем битовом поле.
В настоящее время я выполняю «позиционный подсчет населения» для целых чисел.
для каждого возможного битового поля есть 512, У меня есть соответствующая длинная битовая маска,
которая используется для подсчета частоты установленных битовых позиций.

Код: Выделить всё

0.0100.1101 -> 0000.0000.0001.0000.0000.0001.0001.0000.0001
Я суммирую 9 длинных битовых масок 9-битных полей.
Таким образом, первые 4 младших бита суммы представляют собой частоту, установленный бит 0.Вторые 4 бита обозначают частоту, установленную в бите 1.
И так далее, поэтому я могу сканировать частоту 2.
Это работает, но это не так. так быстро, как я надеялся.
Существует ли более быстрый алгоритм, который я могу реализовать на Java?
Мне не нужно знать все позиции битов. при частоте 2 достаточно одной битовой позиции.

Подробнее здесь: https://stackoverflow.com/questions/787 ... bit-fields
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»