SHIFTRIGHT
功能
对整数值进行算术右移位操作。算术右移会保留符号位,即负数右移后仍为负数。右移 n 位相当于除以 2n(向下取整)。该函数支持 int 和 bigint 类型。
参数
value: int 或 bigint 类型,待移位的值n: int 类型,移位的位数,必须大于等于 0
返回结果
- 与 value 相同的类型(int 或 bigint)
- 返回右移后的结果
- 如果 value 或 n 为 NULL,返回 NULL
举例
说明
- shiftright 是算术右移,保留符号位
- 对于正数:shiftright(x, n) = floor(x / 2n)
- 对于负数,算术右移保留符号位,右移后仍为负数
- 右移操作等价于整数除法(向下取整)
- 与
shiftrightunsigned的区别:shiftright是算术右移,保留符号位shiftrightunsigned是逻辑右移,不保留符号位,用 0 填充最高位
- 示例:对于 -4(二进制表示为 11111111111111111111111111111100)
- shiftright(-4, 2) = -1(保留符号位)
- shiftrightunsigned(-4, 2) = 1073741823(用 0 填充最高位)
- 移位操作是位运算,性能优于除法运算
- 常用于:
- 快速计算除以 2 的幂次
- 位标志和位掩码操作
- 数据编码和解码
- 相关函数:
shiftleft- 左移shiftrightunsigned- 逻辑右移(不保留符号位)
联系我们
