Skip to main content
Skip to main content

位操作函数

位操作函数适用于UInt8,UInt16,UInt32,UInt64,Int8,Int16,Int32,Int64,Float32或Float64中的任何类型。

结果类型是一个整数,其位数等于其参数的最大位。如果至少有一个参数为有符数字,则结果为有符数字。如果参数是浮点数,则将其强制转换为Int64。

bitAnd(a, b)

bitOr(a, b)

bitXor(a, b)

bitNot(a)

bitShiftLeft(a, b)

将值的二进制表示向左移动指定数量的位。

FixedStringString 被视为单个多字节值。

FixedString 值的位在移出时会丢失。相反,String 值使用额外的字节进行扩展,因此不会丢失任何位。

语法

参数

返回值

  • 移位后的值。

返回值的类型与输入值的类型相同。

示例

在以下查询中,binhex函数用于显示移位值的位。

结果:

bitShiftRight(a, b)

将值的二进制表示向右移动指定数量的位。

FixedStringString被视为单个多字节值。请注意,String值的长度会随着位的移出而减少。

语法

参数

返回值

  • 移位后的值。

返回值的类型与输入值的类型相同。

示例

查询语句:

结果:

bitRotateLeft(a, b)

bitRotateRight(a, b)

bitSlice(s, offset, length)

返回从offset索引中的length位长的位开始的子字符串,位索引从 1 开始。

语法

参数

  • s — 类型可以是String或者FixedString
  • offset — 带位的起始索引,正值表示左侧偏移,负值表示右侧缩进,位编号从 1 开始。
  • length — 带位的子串长度。如果您指定一个负值,该函数将返回一个开放子字符串 [offset, array_length - length]。如果省略该值,该函数将返回子字符串 [offset, the_end_string]。如果长度超过s,将被截断。如果长度不是8的倍数,则在右边填充0。

返回值

  • 子字符串,类型为String

示例

查询语句:

结果:

bitTest

取任意整数并将其转换为binary form,返回指定位置的位值。位值从右到左数,从0开始计数。

语法

参数

  • number – 整数。
  • index – 要获取位值的位置。

返回值

返回指定位置的位值

类型为:UInt8

示例

例如,十进制数字 43 在二进制的表示是 101011。

查询语句:

结果:

另一个示例:

查询语句:

结果:

bitTestAll

返回给定位置所有位的 logical conjunction 进行与操作的结果。位值从右到左数,从0开始计数。

与运算的结果:

0 AND 0 = 0

0 AND 1 = 0

1 AND 0 = 0

1 AND 1 = 1

语法

参数

  • number – 整数。
  • index1, index2, index3, index4 – 位的位置。例如,对于一组位置 (index1, index2, index3, index4) 当且仅当它的所有位置都为真时才为真 (index1index2, ⋀ index3index4 )。

返回值

返回逻辑与的结果。

类型为: UInt8

示例

例如,十进制数字 43 在二进制的表示是 101011。

查询语句:

结果:

另一个例子:

查询语句:

结果:

bitTestAny

返回给定位置所有位的 logical disjunction 进行或操作的结果。位值从右到左数,从0开始计数。

或运算的结果:

0 OR 0 = 0

0 OR 1 = 1

1 OR 0 = 1

1 OR 1 = 1

语法

参数

  • number – 整数。
  • index1, index2, index3, index4 – 位的位置。

返回值

返回逻辑或的结果。

类型为: UInt8

示例

例如,十进制数字 43 在二进制的表示是 101011。

查询语句:

结果:

另一个例子:

查询语句:

结果:

bitCount

计算数字的二进制表示中值为 1 的位数。

语法

参数

  • x — 类型为Integerfloating-point数字。该函数使用内存中的值表示。它允许支持浮点数。

返回值

  • 输入数字中值为 1 的位数。

该函数不会将输入值转换为更大的类型 (sign extension)。 因此,例如,bitCount(toUInt8(-1)) = 8

类型为: UInt8

示例

以十进制数字 333 为例,它的二进制表示为: 0000000101001101。

查询语句:

结果:

bitHammingDistance

返回两个整数值的位表示之间的 Hamming Distance。可与 SimHash 函数一起使用,用于检测半重复字符串。距离越小,这些字符串就越有可能相同。

语法

参数

  • int1 — 第一个整数值。类型为Int64
  • int2 — 第二个整数值。类型为Int64

返回值

  • 汉明距离。

类型为: UInt8

示例

查询语句:

结果:

使用SimHash函数:

结果: