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

ビット関数

ビット関数は、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から始まります。

構文

引数

  • sStringまたはFixedStringです。
  • offset — ビットの開始インデックス。正の値は左のオフセットを示し、負の値は右のインデントを示します。ビットの番号付けは1から始まります。
  • length — ビットのサブストリングの長さ。負の値を指定した場合、関数はオープンサブストリング[offset, array_length - length]を返します。値を省略した場合、関数はサブストリング[offset, the_end_string]を返します。lengthがsを超えるとトランクされます。lengthが8の倍数でない場合、右側に0を埋めます。

返される値

  • サブストリング。String

クエリ:

結果:

byteSlice(s, offset, length)

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

bitTest

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

構文

引数

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

返される値

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

例えば、数値43の2進数(バイナリ)表現は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 – ビットの位置。例えば、位置のセット(index1index2index3index4)が真であるのは、すべての位置が真である場合のみです(index1index2index3index4)。

返される値

  • 論理積の結果。UInt8

例えば、数値43の2進数(バイナリ)表現は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

例えば、数値43の2進数(バイナリ)表現は101011です。

クエリ:

結果:

別の例:

クエリ:

結果:

bitCount

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

構文

引数

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

返される値

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

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

数値333を例に取ると、その2進数表現は0000000101001101です。

クエリ:

結果:

bitHammingDistance

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

構文

引数

  • int1 — 最初の整数値。Int64
  • int2 — 2番目の整数値。Int64

返される値

  • ハミング距離。UInt8

クエリ:

結果:

SimHashとともに:

結果: