メインコンテンツまでスキップ
メインコンテンツまでスキップ

ビット関数

ビット関数は、UInt8UInt16UInt32UInt64Int8Int16Int32Int64Float32、またはFloat64の任意の型のペアに対して動作します。一部の関数はStringおよびFixedString型をサポートしています。

結果の型は、その引数の最大ビット数に等しい整数です。引数のうち少なくとも1つが符号付きである場合、結果は符号付き数になります。引数が浮動小数点数である場合、Int64にキャストされます。

bitAnd(a, b)

bitOr(a, b)

bitXor(a, b)

bitNot(a)

bitShiftLeft(a, b)

指定されたビット位置数だけ、値のバイナリ表現を左にシフトします。

FixedStringまたはStringは、単一のマルチバイト値として扱われます。

FixedString値のビットは、シフトされる際に失われます。逆に、String値は追加のバイトで拡張されるため、ビットは失われません。

構文

引数

返される値

  • シフトされた値。

返される値の型は、入力値の型と同じです。

以下のクエリでは、bin および hex 関数を使用してシフトされた値のビットを表示しています。

結果:

bitShiftRight(a, b)

指定されたビット位置数だけ、値のバイナリ表現を右にシフトします。

FixedStringまたはStringは、単一のマルチバイト値として扱われます。ビットをシフトするとString値の長さが減少することに注意してください。

構文

引数

返される値

  • シフトされた値。

返される値の型は、入力値の型と同じです。

クエリ:

結果:

bitRotateLeft(a, b)

bitRotateRight(a, b)

bitSlice(s, offset, length)

'offset' インデックスから始まる、'length' ビット長の部分文字列を返します。ビットのインデックスは 1 から始まります。

構文

引数

  • s — s は String または FixedString
  • offset — ビットの開始インデックス。正の値は左のオフセットを示し、負の値は右のインデントを示します。ビットの番号は 1 から始まります。
  • length — ビットを持つ部分文字列の長さ。負の値を指定すると、関数はオープン部分文字列 [offset, array_length - length] を返します。値を省略すると、関数は部分文字列 [offset, the_end_string] を返します。長さがsを超える場合、切り捨てられます。長さが8の倍数でない場合、右に0を埋めます。

返される値

クエリ:

結果:

byteSlice(s, offset, length)

関数 substring を参照してください。

bitTest

任意の整数を取りそれを バイナリ形式 に変換し、指定された位置のビットの値を返します。カウントは右から左へ、0 から始まります。

構文

引数

  • number – 整数値。
  • index – ビットの位置。

返される値

  • 指定された位置のビットの値。UInt8

例えば、2進数(バイナリ)数値システムにおける数43は101011です。

クエリ:

結果:

別の例:

クエリ:

結果:

bitTestAll

指定された位置のすべてのビットの 論理積(AND演算子)の結果を返します。カウントは右から左へ、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) がすべてtrueのときのみtrueです(index1index2, ⋀ index3index4)。

返される値

  • 論理積の結果。UInt8

例えば、2進数(バイナリ)数値システムにおける数43は101011です。

クエリ:

結果:

別の例:

クエリ:

結果:

bitTestAny

指定された位置のすべてのビットの 論理和(OR演算子)の結果を返します。カウントは右から左へ、0 から始まります。

ビット単位の演算のための和:

0 OR 0 = 0

0 OR 1 = 1

1 OR 0 = 1

1 OR 1 = 1

構文

引数

  • number – 整数値。
  • index1, index2, index3, index4 – ビットの位置。

返される値

  • 論理和の結果。UInt8

例えば、2進数(バイナリ)数値システムにおける数43は101011です。

クエリ:

結果:

別の例:

クエリ:

結果:

bitCount

数値のバイナリ表現において1に設定されているビットの数を計算します。

構文

引数

  • x整数 または 浮動小数点 数値。この関数はメモリ内の値表現を使用します。これにより浮動小数点数をサポートできます。

返される値

  • 入力数値における1に設定されているビットの数。UInt8
注記

この関数は、入力値をより大きな型に変換しません(符号拡張)。したがって、例えば bitCount(toUInt8(-1)) = 8 となります。

例えば、数333を考えます。そのバイナリ表現は: 0000000101001101。

クエリ:

結果:

bitHammingDistance

二つの整数値のビット表現間の ハミング距離 を返します。SimHash 関数と共に半重複文字列の検出に使用できます。距離が小さいほど、それらの文字列が同じである可能性が高くなります。

構文

引数

  • int1 — 第一整数値。Int64
  • int2 — 第二整数値。Int64

返される値

  • ハミング距離。UInt8

クエリ:

結果:

SimHash による例:

結果: