bit_count()

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()

bitwise_and(x, y) → bigint xとyのビットごとのANDを2の補数表現で返します。

19(バイナリ: 10011)と25(バイナリ: 11001)のビットごとのANDは17(バイナリ: 10001)です:

SELECT bitwise_and(19, 25); -- 17

bitwise_not(x) → bigint

xのビットごとのNOTを2の補数表現で返します(NOT x = -x - 1):

SELECT bitwise_not(-12); -- 11
SELECT bitwise_not(19); -- -20
SELECT bitwise_not(25); -- -26

bitwise_or()

bitwise_or(x, y) → bigint

xとyのビットごとのORを2の補数表現で返します。

SELECT bitwise_or(19,25); -- 27

bitwise_xor()

bitwise_xor(x, y) → bigint

xとyのビットごとのXORを2の補数表現で返します。

19(バイナリ: 10011)と25(バイナリ: 11001)のビットごとのXORは10(バイナリ: 01010)です:

SELECT bitwise_xor(19, 25); -- 10