Числовые операторы
Двоичные операторы
Двоичные операторы выполняют поразрядные операции с битовыми последовательностями или целыми числами, что обычно приводит к изменению их значений. Двоичные операторы PostgreSQL перечислены в табл. 5.6.
Таблица 5.6. Двоичные операторы.
| Оператор | Синтаксис | Описание | 
|---|---|---|
| & | а & b | Поразрядная конъюнкция двоичных представлений а и b (которые могут быть заданы в виде целых чисел) | 
| | | а | b | Поразрядная дизъюнкция двоичных представлений а и b (которые могут быть заданы в виде целых чисел) | 
| # | а # b | Поразрядная операция исключающей дизъюнкции двоичных представлений а и b (которые могут быть заданы в виде целых чисел) | 
| - | -b | Поразрядное отрицание, возвращает инвертированную битовую последовательность b | 
| << | b << n | Сдвиг b влево на n разрядов | 
| >> | b >> n | Сдвиг b вправо на n разрядов | 
В листинге 5.13 приведен пример сдвига числа и его двоичного представления на два разряда вправо оператором ". Кроме того, в нем используется функция преобразования битовой последовательности в целочисленный тип bitten nt4(), описанная в разделе "Функции".
Листинг 5.13. Сдвиг битовых последовательностей.
booktown=# SELECT b'1000' >> 2 AS "8 SHIFTed right". booktown-# Mttoint4(b'1000' >> 2) AS integer. booktown-# 8 >> 2 AS likewise; 8 SHIFTed right | integer | likewise 0010 I 2 I 2 (1 row)
Примечание
При сдвиге битовых последовательностей исходная длина строки не изменяется, а разряды, выходящие за левый или правый край последовательности, отсекаются. При использовании операторов &, | или # битовые операнды должны иметь одинаковую длину.
