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

Побитовые операторы выполняют операции побитового И (&), побитового исключающего ИЛИ (^) и побитового включающего ИЛИ (|).

Синтаксис

AND-expression:
equality-expression
AND-expression & equality-expression

exclusive-OR-expression:
AND-expression
exclusive-OR-expression ^ AND-expression

inclusive-OR-expression:
exclusive-OR-expressioninclusive-OR-expression | exclusive-OR-expression

Операнды побитовых операторов должны иметь целочисленные типы, но их типы могут отличаться. Эти операторы выполняют обычные арифметические преобразования; типом результата является тип операнда после преобразования.

Ниже описываются побитовые операторы C.

Оператор Описание
& Оператор побитового И сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если оба бита равны 1, соответствующий бит результата устанавливается равным единице. в противном случае — нулю.
^ Оператор побитового исключающего ИЛИ сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если один бит равен 0, а другой равен 1, соответствующий бит результата устанавливается равным 1. в противном случае — нулю.
| Оператор побитового включающего ИЛИ сравнивает каждый бит первого операнда с соответствующим битом второго операнда. Если любой из битов равен единице, соответствующий бит результата устанавливается равным единице, а в противном случае — нулю.

Примеры

Эти объявления используются для следующих трех примеров:

short i = 0xAB00;
short j = 0xABCD;
short n;

n = i & j;

Результат, присваиваемый переменной n в первом примере, совпадает с результатом i (шестнадцатеричное значение 0xAB00).

n = i | j;

n = i ^ j;

Побитовое включающее ИЛИ во втором примере имеет своим результатом шестнадцатеричное значение 0xABCD, в то время как побитовое исключающее ИЛИ в третьем примере — шестнадцатеричное значение 0xCD.

Блок, относящийся только к системам Microsoft

Результат битовой операции с целыми числами со знаками зависит от реализации, согласно стандарту C. Для компилятора Microsoft C побитовые операции со знаковыми целочисленными значениями работают так же, как побитовые операции с беззнаковыми целочисленными значениями. Например, значение -16 & 99 можно представить в двоичном виде следующим образом:

  11111111 11110000
& 00000000 01100011
  _________________
  00000000 01100000

Выполнение побитовой операции И даст десятичное значение 96.

Завершение блока, относящегося только к системам Майкрософт

См. также

Побитовый оператор И: &
Битовый оператор исключающего ИЛИ: ^
Битовый оператор включающего ИЛИ: |