Поделиться через


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

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

Синтаксис

  • выражение-И:
    выражение-равенства

    выражение-И & выражение-равенства

  • выражение-эксклюзивного-ИЛИ:
    выражение-И

    выражение-эксклюзивного-ИЛИ ^ выражение-И

  • выражение-инклюзивного-ИЛИ:
    выражение-эксклюзивного-ИЛИ

    выражение-инклюзивного-ИЛИ | выражение-эксклюзивного-ИЛИ

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

Ниже описываются побитовые операторы 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

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

  11111111 11110000
& 00000000 01100011
  _________________
  00000000 01100000

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

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

См. также

Ссылки

Оператор побитового И: &

Битовый оператор ИЛИ (исключительное): ^

Битовый оператор ИЛИ (включительно): |