Skip to main content
Version: 1.1.1

Bitwise Functions

    bit_count(x, bits) -> bigint

计算 ``x`` 中设置的位数(视为 ``bits`` 位有符号整数),以 2 的补码表示形式表示:

SELECT bit_count(9, 64); -- 2
SELECT bit_count(9, 8); -- 2
SELECT bit_count(-7, 64); -- 62
SELECT bit_count(-7, 8); -- 6
    bitwise_and(x, y) -> bigint

2 的补码表示形式返回“x”和“y”的按位与。
    bitwise_arithmetic_shift_right(x, shift) -> bigint

返回对 ``x`` 进行算术右移运算后,以 2 的补码表示形式移位 ``shift`` 的值。
``shift`` 不能为负数。
    bitwise_left_shift(x, shift) -> [same as x]

返回 ``x`` 左移的值。
支持的 x 类型为:``TINYINT`` 、``SMALLINT`` 、``INTEGER`` 和 ``BIGINT``。
``shift`` 是一个 ``INTEGER``。
    bitwise_logical_shift_right(x, shift, bits) -> bigint

返回对 ``x``(视为 ``bits`` 位整数)进行逻辑右移运算并移位 ``shift`` 的结果。
``shift`` 不能为负数。
    bitwise_not(x) -> bigint

2 的补码表示形式返回“x”的按位非。
    bitwise_or(x, y) -> bigint

2 的补码表示形式返回“x”和“y”的按位或。
    bitwise_right_shift(x, shift) -> [same as x]

返回 ``x`` 的逻辑右移值。
支持的 x 类型为:``TINYINT``、``SMALLINT``、``INTEGER`` 和 ``BIGINT``。
``shift`` 是一个 ``INTEGER``。
    bitwise_right_shift_arithmetic(x, shift) -> [same as x]

返回 ``x`` 的算术右移值。
支持的 x 类型为:``TINYINT``、``SMALLINT``、``INTEGER`` 和 ``BIGINT``。
``shift`` 是一个 ``INTEGER``。
    bitwise_shift_left(x, shift, bits) -> bigint

返回对 ``x``(视为 ``bits`` 位整数)进行左移运算后,移位 ``shift`` 的值。
``shift`` 不能为负数。
    bitwise_xor(x, y) -> bigint

2 的补码表示形式返回“x”和“y”的按位异或。