Побитовые операторы в C
Побитовые операторы выполняют операции побитового И (&
), побитового исключающего ИЛИ (^
) и побитового включающего ИЛИ (|
).
Синтаксис
AND-expression
:
equality-expression
AND-expression
&
equality-expression
exclusive-OR-expression
:
AND-expression
exclusive-OR-expression
^
AND-expression
inclusive-OR-expression
:
exclusive-OR-expression
inclusive-OR-expression
|
exclusive-OR-expression
Операнды побитовых операторов должны иметь целочисленные типы, но их типы могут отличаться. Эти операторы выполняют обычные арифметические преобразования; типом результата является тип операнда после преобразования.
Ниже описываются побитовые операторы C.
Operator | Description |
---|---|
& |
Оператор побитового И сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба бита равны 1, соответствующий бит результата равен 1. В противном случае соответствующий бит результата равен 0. |
^ |
Оператор побитового исключающего ИЛИ сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если один из битов равен 0, а второй равен 1, соответствующий бит результата устанавливается в 1. В противном случае соответствующий бит результата равен 0. |
| |
Оператор побитового включающего ИЛИ сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если какой-либо из битов равен 1, соответствующий бит результата равен 1. В противном случае соответствующий бит результата равен 0. |
Примеры
Эти объявления используются для следующих трех примеров:
short i = 0xAB00;
short j = 0xABCD;
short n;
n = i & j;
Результат, присваиваемый переменной n
в первом примере, совпадает с результатом i
(шестнадцатеричное значение 0xAB00).
n = i | j;
n = i ^ j;
Побитовое включающее ИЛИ во втором примере имеет своим результатом шестнадцатеричное значение 0xABCD, в то время как побитовое исключающее ИЛИ в третьем примере — шестнадцатеричное значение 0xCD.
Блок, относящийся только к системам Майкрософт
Результат битовой операции с целыми числами со знаками зависит от реализации, согласно стандарту C. Для компилятора Microsoft C побитовые операции со знаковыми целочисленными значениями работают так же, как побитовые операции с беззнаковыми целочисленными значениями. Например, значение -16 & 99
можно представить в двоичном виде следующим образом:
11111111 11110000
& 00000000 01100011
_________________
00000000 01100000
Выполнение побитовой операции И даст десятичное значение 96.
Завершение блока, относящегося только к системам Майкрософт
См. также
Побитовый оператор И: &
Битовый оператор исключающего ИЛИ: ^
Битовый оператор включающего ИЛИ: |