Изменения

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

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

1055 байт убрано, 00:37, 7 марта 2016
Ограничения
====Ограничения====
При использовании битовых сдвигов для отрицательных чисел округление происходит к <tex>-inf</tex>.
 
'''''C++ Visual Studio 15'''''
Если выполняется сдвиг влево числа со знаком и при этом затрагивается бит знака, результат не определен. Результат сдвига вправо отрицательного числа со знаком зависит от реализации.
Результат сдвига вправо отрицательного числа со знаком зависит от реализации. Результат операции сдвига также не определен, если число, на которое пользователь хочет нужно сдвинуть биты, имеет отрицательное значение, или если оно больше или равно количеству битов в исходном числе.
<code>
'''short''' x = 16384 <font color = green>// 01000000 00000000</font>
'''''Java'''''
 В языке программирования Java существует также оператор беззнакового битового сдвига вправо <tex>\ggg</tex>. При использовании этого оператора на освободившиеся позиции всегда устанавливаются <tex>0</tex>, тогда как при использовании <tex>\gg</tex> на освободившиеся позиции устанавливается бит знака. При использовании битовых сдвигов есть некоторое отличие от целочисленного деления на <tex>2</tex>: если сдвигать отрицательное число вправо, то сначала это аналогично целочисленному делению на <tex>2</tex>, но когда останется <tex>-1</tex>, то при следующих сдвигах результат меняться не будет. То есть происходит округление не к нулю, как при целочисленном делении, а к <tex>-1</tex>. Также нельзя Нельзя сдвинуть число на количество бит большее, чем разрядность операнда. При этом происходит неявное сокращение правого операнда (количество бит).
''Примеры:''
276
правок

Навигация