Изменения

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

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

109 байт убрано, 23:12, 20 марта 2016
Циклический сдвиг влево
</code>
====Циклический сдвиг влево====Пусть дано число <tex>x</tex> и надо совершить циклический сдвиг его битов влевона величину <tex>d</tex>.Желаемый результат можно получить, если объединить числа, полученные при выполнении обычного битового сдвига влево в желаемую сторону на необходимую величину <tex>d</tex> и вправо в противоположном направлении на разность между разрядностью числа и величиной сдвига. Таким образом, мы сможем поменять местами начальную и конечную части числа.
<code>
'''int''' head, tail head = x << a <font color = green>// x n {{---}} изменяемое числоразрядность числа</font> <font color = green>// a {{---}} число позиций, на которое хотим выполнить сдвигСдвиг влево</font> '''if''' a != 0: tail x = (x << d) | (x >>> (n - ad) ) <font color = green>// n {{---}} разрядность числа xСдвиг вправо</font> '''else''': tail x = 0 result = head (x >>> d) | tail(x << (n - d))
</code>
276
правок

Навигация