====Разворот битов====
Чтобы получить биты числа <tex>x</tex>, записанные в обратном порядке, будем снимать значение младшего бита, умножать его на старшую незаписанную степень двойки и сдвигать число вправо на единицу для обработки следующих битприменим следующий алгоритм. 
<code>
 result <font color = 0green>// Пример приведен для 16-ти битных чисел. // Для чисел других разрядностей нужны соответствующие константы.</font> position x = 1 ((x & 0x5555) << 1) | ((n - x >>> 1)    & 0x5555)  <font color = green>// n {{---}} разрядность числа xЧетные и нечетные биты поменялись местами.</font> '''while''' x != 0:((x & 0x3333) << 2) | ((x >>> 2) & 0x3333)  <font color = green>// Биты "перетасовываются" группами по два.</font>     result + x = ((x & 10x0f0f) << 4) * position     position | ((x >>>4) & 0x0f0f)  <font color = 1green>// Биты "перетасовываются" группами по четыре.</font>      x = ((x & 0x00ff) << 8) | ((x >>> 8) & 0x00ff)  <font color = 1green>// Биты "перетасовываются" группами по восемь.</font>
</code>
 
Более подробно про то, что за константы выбраны для данного алгоритма, можно прочитать в разделе [[Побитовые_операции#Подсчет_количества_единичных_битов | Подсчет количества единичных битов]].
===Применение для решения задач===