Изменения

Перейти к: навигация, поиск

Побитовые операции

34 байта добавлено, 00:00, 21 марта 2016
Подсчет количества единичных битов
Для подсчета количества единичных битов в числе <tex>x</tex> можно воспользоваться следующим алгоритмом:
<code>
<font color = green>// Пример приведен для 16-ти битных чисел. // Для чисел большей разрядности других разрядностей необходимо использовать соответствующие константы.</font> '''int16''' setBitsNumber(x: '''int16'''): x = x - ((x >>> 1) & 0x5555) x = (x & 0x3333) + ((x >>> 2) & 0x3333) x = (x + (x >>> 4)) & 0x0F0F answer = '''return''' (x * 0x0101) >>> 8
</code>
Подведем итог:
<code>
'''int16''' setBitsNumber(x: '''int16'''): x = (x & 0x5555) + ((x >>> 1) & 0x5555) x = (x & 0x3333) + ((x >>> 2) & 0x3333) x = (x & 0x0F0F) + ((x >>> 4) & 0x0F0F) answer = '''return''' (x * 0x0101) >>> 8
</code>
276
правок

Навигация