Изменения

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

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

1618 байт добавлено, 22:28, 12 марта 2016
Применение
</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>. Тогда
276
правок

Навигация