На этом шаге мы рассмотрим эти операции и особенности их использования.
Эти операции выполняются над соответствующими битами чисел, имеющими целый тип. Если операнд - не целое число, то оно автоматически преобразуется в целое. Побитовые операции таковы:
int a, b=3, c=4;
a = b & с;
int a, b=3, c=4;
a = b | с;
int a, b=3, с=4;
а = b ^ с;
int a, b=3, c=4;
a = b ~ с;
int a, b=3, с=4;
а = b >> с;
int a, b=3, c=4;
a = b << с;
Побитовые логические операции выполняются по правилам, приведенным в таблице 1.
Значения битов | Результат операции | ||||
---|---|---|---|---|---|
Е1 | Е2 | Е1 & Е2 | Е1 | Е2 | Е1 ^ Е2 | ~Е1 |
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
Следует отличать побитовые операции над целыми числами от логических. Например:
int х=1, y=2; bool а=х && у; bool b=x & у;
Здесь:
а = 1, b = 0, потому что:
из a = x && y следует: т. к. х не равно и у не равно 0, то по определению операции && результат будет истинен, а в языке С истинный результат имеет значение 1.
С другой стороны, для поразрядного "и" получим: х = 01, у = 10 в двоичной системе счисления, в которую надо перевести операнды, чтобы выполнить побитовую операцию &. Тогда получим: 01 & 10 = 00.
На следующем шаге мы рассмотрим операции присваивания.