Presto 提供了如下几种位运算函数:

函数 语法 说明
bit_count bit_count(x, bits) → bigint 返回 x 的补码中置 1 的位数
bitwise_and bitwise_and(x, y) → bigint 位与函数
bitwise_not bitwise_not(x) → bigint 取非操作
bitwise_or bitwise_or(x, y) → bigint 位或函数
bitwise_xor bitwise_xor(x, y) → bigint 抑或函数
bitwise_and_agg bitwise_and_agg(x) → bigint 返回 x 中所有值的与操作结果,x 为数组
bitwise_or_agg bitwise_or_agg(x) → bigint 返回 x 中所有值的或操作结果,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