更新时间:2024-07-24 GMT+08:00

Bitwise函数

  • bit_count(x, bits) → bigint

    计算2的补码表示法中x中设置的位数(视为有符号位的整数)。

    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

    以二进制补码形式返回x和y按位与的结果。

    select bitwise_and(8, 7); -- 0
  • bitwise_not(x) → bigint

    以二进制补码形式返回x按位非的结果。

    select bitwise_not(8);-- -9
  • bitwise_or(x, y) → bigint

    以二进制补码形式返回x和y按位或的结果。

    select bitwise_or(8,7);-- 15
  • bitwise_xor(x, y) → bigint

    以二进制补码形式返回x和y按位异或的结果。

    SELECT bitwise_xor(19,25); -- 10
  • bitwise_left_shift(value, shift) → [same as value]

    描述:返回value左移shift位后的值。

    SELECT bitwise_left_shift(1, 2); -- 4
    SELECT bitwise_left_shift(5, 2); -- 20
    SELECT bitwise_left_shift(0, 1); -- 0
    SELECT bitwise_left_shift(20, 0); -- 20
  • bitwise_right_shift(value, shift) → [same as value]

    描述:返回value右移shift位后的值。

    SELECT bitwise_right_shift(8, 3); -- 1
    SELECT bitwise_right_shift(9, 1); -- 4
    SELECT bitwise_right_shift(20, 0); -- 20
    SELECT bitwise_right_shift(0, 1); -- 0
    -- 右移超过64位,返回0
    SELECT bitwise_right_shift( 12, 64); -- 0
  • bitwise_right_shift_arithmetic(value, shift) → [same as value]

    描述:返回value的算术右移值,当shift小于64位时,返回结果与bitwise_right_shift一样,当移动位数达到或者超过64位时,value是正数时返回0,负数时返回-1:

    SELECT bitwise_right_shift_arithmetic( 12, 64); --  0 
    SELECT bitwise_right_shift_arithmetic(-45, 64); -- -1