276
правок
Изменения
→Применение
</code>
====Подсчет количества единичных битов====
'''Способ 1.'''
Самый простой способ посчитать количество единичных битов в числе <tex>x</tex> {{---}} сдвигать его на <tex>1</tex> вправо до тех пор, пока оно не станет равно нулю и смотреть на последний бит.
<code>
'''int''' answer = 0
'''while''' x != 0:
answer += x & 1
x >> 1
</code>
'''Способ 2.'''
Пусть мы хотим посчитать количество единичных бит в числе <tex>x</tex>. Если вычесть из <tex>x</tex> единицу, то его младший единичный бит обнулится, а все последующие за ним биты примут значение <tex>1</tex>. Если произвести операцию побитового И между <tex>x</tex> и <tex>(x - 1)</tex>, то мы получим число, побитово равное <tex>x</tex> во всех позициях, кроме младшего единичного бита <tex>x</tex> (в результирующем числе он будет нулевым). Таким образом, количество совершенных операций до того момента, как исходное число обратится в ноль, будет равно количеству единичных бит в нём.
<code>
'''int''' answer = 0
'''while''' x != 0:
x &= x - 1
answer++
</code>
====Вычисление модуля числа без использования условного оператора====
Пусть дано число <tex>x</tex>. Тогда