Операции “<<” и “>>” над битовым представлением в выражении m<<n или m>>n позволяют сдвигать битовую шкалу в представлении m на n>0 позиции влево или вправо. Если сдвигаемая величина положительная, то при сдвиге вправо освобождающиеся позиции заполняются нулями, для отрицательных величин - единицами. При сдвиге влево освобождающиеся справа позиции заполняются нулями.
Операция “~” означает дополнение до 1. В битовом представлении ~а разряд содержит единицу, если соответствующий разряд а содержит 0 и наоборот.
Операция “&”- поразрядное “и”. В результате операции b&a единица стоит в разряде, где оба операнда содержат 1, в противном случае разряд содержит 0.
Операция “|”- это поразрядное “или”. В результате b|a стоит 0 там, где разряды а и b равны нулю и 1 в противном случае.
Операция “^”- это поразрядное исключающее “или”. В результате b^a стоит 0 там, где а и b имеют одинаковые биты и 1 в противном случае.
Пример:
/* побитовые операции */
# include<stdio.h>
#include<conio.h>
void main( )
{
int a,b,c,d;
clrscr();
printf("Введите 4 числа: \n");
scanf("%d %d %d %d",&a,&b,&c,&d);
printf("~%d=%d\n",a,~a);
printf("%d & %d=%d\n",a,b,a&b);
printf("%d | %d=%d\n",c,d,c|d);
printf("%d^%d=%d\n",a,d,a^d);
printf("%d>>%d=%d\n",b,d,b>>d);
printf("%d<<%d=%d\n",c,a,c>>a);
getch();
}