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

К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов, для shl, shr - результирующий тип будет как минимум integer, а для 64-битных целых - совпадать с типом левого операнда, для not - будет как минимум integer, а для 64-битных целых - совпадать с типом операнда.

Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция. Например:

00010101 and 00011001 = 00010001
00010101 or 00011001 = 00011101
00010101 xor 00011001 = 00001100
not 00010101 = 11101010

(операнды и результат представлены в двоичной форме).

Операции not, and, or и xor предназначены для работы с беззнаковыми целыми. Знаковые целые трактуются как беззнаковые, с этой точки зрения применеие этих операций к знаковым целым лишено смысла.

Операциии shl и shr имеют вид:

a shl n
a shr n

где n - целое положительное число, a - целое число.

a shl n представляет собой целое положительное, полученное из двоичного представления числа a сдвигом влево на n позиций. Добавляемые справа позиции заполняются нулями.

a shr n представляет собой целое положительное, полученное из двоичного представления числа a сдвигом вправо на n позиций.

Например:

3 shl 2 = 12
12 shr 2 = 3

поскольку 3=112, после сдвига влево на 2 позиции 112 преобразуется в 11002=12, а 12=11002 после сдвига вправо на 2 позиции преобразуется в 112=3.

Для знаковых целых операции shl и shr сохраняют знак.