ビット関数
ビット関数は、UInt8
、UInt16
、UInt32
、UInt64
、Int8
、Int16
、Int32
、Int64
、Float32
、またはFloat64
からの任意の型のペアに対して機能します。一部の関数は、String
およびFixedString
型をサポートしています。
結果の型は、引数の最大ビット数に等しい整数です。引数のうち少なくとも1つが符号付きの場合、結果は符号付きの数となります。引数が浮動小数点数の場合、Int64
にキャストされます。
bitAnd(a, b)
bitOr(a, b)
bitXor(a, b)
bitNot(a)
bitShiftLeft(a, b)
指定されたビット位置の数だけ、値のバイナリ表現を左にシフトします。
FixedString
またはString
は、単一のマルチバイト値として扱われます。
FixedString
値のビットはシフトアウトすると失われます。それに対して、String
値は追加のバイトで拡張されるため、ビットが失われることはありません。
構文
引数
a
— シフトする値。整数型、StringまたはFixedStringです。b
— シフト位置の数。符号なし整数型、64ビット型以下が許可されています。
返される値
- シフトされた値。
返される値の型は、入力値の型と同じです。
例
次のクエリでは、binおよびhex関数を使用して、シフトされた値のビットを表示します。
結果:
bitShiftRight(a, b)
指定されたビット位置の数だけ、値のバイナリ表現を右にシフトします。
FixedString
またはString
は、単一のマルチバイト値として扱われます。ビットがシフトアウトされると、String
値の長さは減少することに注意してください。
構文
引数
a
— シフトする値。整数型、StringまたはFixedStringです。b
— シフト位置の数。符号なし整数型、64ビット型以下が許可されています。
返される値
- シフトされた値。
返される値の型は、入力値の型と同じです。
例
クエリ:
結果:
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]を返します。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
– ビットの位置。例えば、位置のセット(index1
、index2
、index3
、index4
)が真であるのは、すべての位置が真である場合のみです(index1
⋀index2
⋀index3
⋀index4
)。
返される値
- 論理積の結果。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に設定されているビットの数を計算します。
構文
引数
返される値
- 入力数において1に設定されているビットの数。UInt8。
この関数は、入力値をより大きな型に変換しません(符号拡張)。したがって、例えば、bitCount(toUInt8(-1)) = 8
となります。
例
数値333を例に取ると、その2進数表現は0000000101001101です。
クエリ:
結果:
bitHammingDistance
2つの整数値のビット表現のハミング距離を返します。半重複文字列の検出のためにSimHash関数と共に使用できます。距離が小さいほど、これらの文字列が同じである可能性が高くなります。
構文
引数
返される値
- ハミング距離。UInt8。
例
クエリ:
結果:
SimHashとともに:
結果: