Перейти к основному содержимому

bit_shift_right_logical

Описание

Сдвигает двоичное представление числового выражения вправо на указанное количество битов.

Эта функция выполняет логический сдвиг вправо, при котором длина бита не изменяется, младший бит отбрасывается, а к старшему биту добавляется 0 независимо от того, является ли исходный бит положительным или отрицательным. Логические сдвиги являются беззнаковыми сдвигами. Например, сдвиг 10101 на один бит приводит к 00101.

bit_shift_right() и bit_shift_right_logical() возвращают одинаковый результат для положительного значения.

Синтаксис

bit_shift_right_logical(value, shift)

Параметры

value: значение или числовое выражение для сдвига. Поддерживаемые типы данных: TINYINT, SMALLINT, INT, BIGINT и LARGEINT.

shift: количество битов для сдвига. Поддерживаемый тип данных: BIGINT.

Возвращаемое значение

Возвращает значение того же типа, что и value.

Примечания по использованию

  • Если любой входной параметр равен NULL, возвращается NULL.
  • Если shift меньше 0, возвращается 0.
  • Сдвиг value на 0 всегда приводит к исходному value.
  • Сдвиг 0 на shift всегда приводит к 0.
  • Если тип данных value является числовым, но не целым числом, это значение будет приведено к целому числу. См. Примеры.
  • Если тип данных value является строкой, значение будет приведено к целому числу, если это возможно. Например, строка "2.3" будет приведена к 2. Если значение не может быть приведено к целому числу, значение будет рассматриваться как NULL. См. Примеры.

Примеры

Используйте эту функцию для сдвига числовых значений.

SELECT bit_shift_right_logical(2, 1);
+-------------------------------+
| bit_shift_right_logical(2, 1) |
+-------------------------------+
| 1 |
+-------------------------------+

SELECT bit_shift_right_logical(2.2, 1);
+---------------------------------+
| bit_shift_right_logical(2.2, 1) |
+---------------------------------+
| 1 |
+---------------------------------+

SELECT bit_shift_right_logical("2", 1);
+---------------------------------+
| bit_shift_right_logical('2', 1) |
+---------------------------------+
| 1 |
+---------------------------------+

SELECT bit_shift_right_logical(cast('-2' AS INTEGER(32)), 1);
+-----------------------------------------------+
| bit_shift_right_logical(CAST('-2' AS INT), 1) |
+-----------------------------------------------+
| 2147483647 |
+-----------------------------------------------+

Ссылки