腾讯云数据仓库 TCHouse-X 位操作函数

这篇说说TCHouse-X内核2.0.0及以上版本的位运算函数,涵盖逻辑位运算符(按位与、或、异或、非)、位统计与提取(bit_count、bit_get、getbit)及位移操作(shiftleft、shiftright),并说明各函数的用法与注意事项。 逻辑位运算符:通过bitwise_and、bitwise_or、bitwise_xor、bitwise_not对整数二进制位进行与、或、异或、非运算。 位统计与提。

相关产品
腾讯云数据仓库 TCHouse-X 产品页,含版本规格、价格与购买入口。

注意:说明:

注意:适用版本:TCHouse-X 内核版本 2.0.0及以上版本。

一、逻辑位运算符

此类函数通过比较两个整数对应的二进制位来计算结果。

函数 说明 SQL 样例 结果 (二进制)
bitwise_and(x, y) 返回 x 和 y 的按位与结果 SELECT bitwise_and(3, 5); 1 (0011 & 0101 = 0001)
bitwise_or(x, y) 返回 x 和 y 的按位或结果 SELECT bitwise_or(3, 5); 7 (0011 | 0101 = 0111)
bitwise_xor(x, y) 返回 x 和 y 的按位异或结果 SELECT bitwise_xor(3, 5); 6 (0011 ^ 0101 = 0110)
bitwise_not(x) 返回 x 的按位非值 (NOT) SELECT bitwise_not(0); -1

二、位统计与提取

用于分析数值内部的 1 分布情况。

函数 说明 SQL 样例 结果
bit_count(x) 统计参数 x 中被设置为 1 的位数。 SELECT bit_count(7); 3(7 的二进制是 111,共有 3 个 "1"。)
bit_get(x, pos) 返回指定位置 pos 的位值(0 或 1)。 SELECT bit_get(11, 3); 1(11 二进制为 1011。第 3 位(从右往左,0 开始)是 1。)
getbit(x, pos) 同上 SELECT getbit(11, 2); 0(功能同上。第 2 位是 0。)

注意:bit_get 的 pos 不能超过类型的最大位数(如 INTEGER 是 31,BIGINT 是 63),否则会报错。

三、位移操作

在底层算法中常用于快速乘、除以 2^n。

函数 SQL 样例 结果 计算过程
shiftleft(x, n) SELECT shiftleft(2, 2); 8 2 (0010) 左移 2 位变为 8 (1000)。相当于 2 * (2^2)。
shiftright(x, n) SELECT shiftright(8, 1); 4 8 (1000) 右移 1 位变为 4 (0100)。相当于 8 / (2^1)。
赞 (0)
上一篇 4天前
下一篇 4天前