Побитовые операторы в 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