Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js
 

printОперации

printПоразрядные операции

Поразрядные операции можно выполнять только над целыми числами, выполняются действия над двоичным представлением этих чисел.

Операция Описание
~x поразрядное отрицание
x&y поразрядное И
x|y поразрядное ИЛИ
x^y поразрядное исключающее ИЛИ
x<<y сдвиг битов влево: x2y
x>>y сдвиг битов вправо: x2y

Если в операциях сдвига y отрицательный или превышает количество битов в x, то результат операции не определен. При сдвиге вправо отрицательных чисел результат зависит от компьютера, но обычно знаковый бит заполняет разряды: -10>>2 == -3.

#include <stdio.h>
int main()
{ int a=10,b=9; // a=0b1010, b=0b1001
  printf("~a=%d\n",~a);
  printf("a|b=%d\n",a|b);
  printf("a&b=%d\n",a&b);
  printf("a^b=%d\n",a^b);
  printf("a<<b=%d\n",a<<b);
  printf("a>>b=%d\n",a>>b);
}
Ввод:

Выполнить
Вывод:

Для поразрядных операций есть их комбинации с присваиванием: x|=y x&=y x^=y x<<=y x>>=y.

unsigned x,i,b;
b=(x>>i)&1; // получить i-й бит
x|=(1u<<i); // установить i-й бит в 1
x&=~(1u<<i); // установить i-й бит в 0
loading