6.7. Bitwise Functions

  • bitcount(_x, bits) → bigint
  • Count the number of bits set in x (treated as bits-bit signedinteger) in 2’s complement representation:
  1. SELECT bit_count(9, 64); -- 2
  2. SELECT bit_count(9, 8); -- 2
  3. SELECT bit_count(-7, 64); -- 62
  4. SELECT bit_count(-7, 8); -- 6
  • bitwiseand(_x, y) → bigint
  • Returns the bitwise AND of x and y in 2’s complement representation.

  • bitwisenot(_x) → bigint

  • Returns the bitwise NOT of x in 2’s complement representation.

  • bitwiseor(_x, y) → bigint

  • Returns the bitwise OR of x and y in 2’s complement representation.

  • bitwisexor(_x, y) → bigint

  • Returns the bitwise XOR of x and y in 2’s complement representation.

  • bitwiseshift_left(_x, shift, bits) → bigint

  • Left shift operation on x (treated as bits-bit integer)shifted by shift.
SELECT bitwise_shift_left(7, 2, 4); – 12SELECT bitwise_shift_left(7, 2, 64); – 28
  • bitwiselogical_shift_right(_x, shift, bits) → bigint
  • Logical right shift operation on x (treated as bits-bit integer)shifted by shift.
SELECT bitwise_logical_shift_right(7, 2, 4); – 1SELECT bitwise_logical_shift_right(-8, 2, 5); – 6
  • bitwisearithmetic_shift_right(_x, shift) → bigint
  • Arithmetic right shift operation on x shifted by shift in 2’s complement representation.
SELECT bitwise_arithmetic_shift_right(-8, 2); – -2SELECT bitwise_arithmetic_shift_right(7, 2); – 1

See also bitwise_and_agg() and bitwise_or_agg().