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 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(x, y)
→ bigint
xとyのビットごとのORを2の補数表現で返します。
SELECT bitwise_or(19,25); -- 27
bitwise_xor(x, y)
→ bigint
xとyのビットごとのXORを2の補数表現で返します。
19(バイナリ: 10011)と25(バイナリ: 11001)のビットごとのXORは10(バイナリ: 01010)です:
SELECT bitwise_xor(19, 25); -- 10