276
правок
Изменения
→Разворот битов
Чтобы получить биты числа <tex>x</tex>, записанные в обратном порядке, применим следующий алгоритм.
<code>
<font color = green>// Пример приведен для 16-ти битных чисел. // Для чисел других разрядностей нужны соответствующие константы.</font> '''int16''' reverseBits(x: '''int16'''): x = ((x & 0x5555) << 1) | ((x >>> 1) & 0x5555) <font color = green>// Четные и нечетные биты поменялись местами.</font> x = ((x & 0x3333) << 2) | ((x >>> 2) & 0x3333) <font color = green>// Биты "перетасовываются" группами по два.</font> x = ((x & 0x0F0F) << 4) | ((x >>> 4) & 0x0F0F) <font color = green>// Биты "перетасовываются" группами по четыре.</font> x = ((x & 0x00FF) << 8) | ((x >>> 8) & 0x00FF) <font color = green>// Биты "перетасовываются" группами по восемь.</font> '''return''' x
</code>
Более подробно про то, что за константы выбраны для данного алгоритма, можно прочитать в разделе [[Побитовые_операции#Подсчет_количества_единичных_битов | Подсчет подсчет количества единичных битов]].
===Применение для решения задач===