mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-17 22:10:54 +00:00
256 lines
5.5 KiB
Markdown
256 lines
5.5 KiB
Markdown
|
---
|
|||
|
machine_translated: true
|
|||
|
machine_translated_rev: d734a8e46ddd7465886ba4133bff743c55190626
|
|||
|
toc_priority: 48
|
|||
|
toc_title: "\u30D3\u30C3\u30C8"
|
|||
|
---
|
|||
|
|
|||
|
# ビット機能 {#bit-functions}
|
|||
|
|
|||
|
ビット関数は、uint8、uint16、uint32、uint64、int8、int16、int32、int64、float32、またはfloat64のいずれかの種類のペアで機能します。
|
|||
|
|
|||
|
結果の型は、その引数の最大ビットに等しいビットを持つ整数です。 引数のうち少なくとも一方が署名されている場合、結果は署名された番号になります。 引数が浮動小数点数の場合、int64にキャストされます。
|
|||
|
|
|||
|
## bitAnd(a,b) {#bitanda-b}
|
|||
|
|
|||
|
## bitOr(a,b) {#bitora-b}
|
|||
|
|
|||
|
## bitXor(a,b) {#bitxora-b}
|
|||
|
|
|||
|
## bitNot(a) {#bitnota}
|
|||
|
|
|||
|
## ビットシフトレフト(a,b) {#bitshiftlefta-b}
|
|||
|
|
|||
|
## ビットシフトライト(a,b) {#bitshiftrighta-b}
|
|||
|
|
|||
|
## bitRotateLeft(a,b) {#bitrotatelefta-b}
|
|||
|
|
|||
|
## bitRotateRight(a,b) {#bitrotaterighta-b}
|
|||
|
|
|||
|
## 適者生存 {#bittest}
|
|||
|
|
|||
|
任意の整数を受け取り、それを [バイナリ形式](https://en.wikipedia.org/wiki/Binary_number)、指定された位置にあるビットの値を返します。 カウントダウンは右から左に0から始まります。
|
|||
|
|
|||
|
**構文**
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTest(number, index)
|
|||
|
```
|
|||
|
|
|||
|
**パラメータ**
|
|||
|
|
|||
|
- `number` – integer number.
|
|||
|
- `index` – position of bit.
|
|||
|
|
|||
|
**戻り値**
|
|||
|
|
|||
|
指定された位置にあるbitの値を返します。
|
|||
|
|
|||
|
タイプ: `UInt8`.
|
|||
|
|
|||
|
**例えば**
|
|||
|
|
|||
|
たとえば、ベース43(バイナリ)数値システムの数値は101011です。
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTest(43, 1)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTest(43, 1)─┐
|
|||
|
│ 1 │
|
|||
|
└────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
別の例:
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTest(43, 2)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTest(43, 2)─┐
|
|||
|
│ 0 │
|
|||
|
└────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
## bitTestAll {#bittestall}
|
|||
|
|
|||
|
の結果を返します [論理結合](https://en.wikipedia.org/wiki/Logical_conjunction) 与えられた位置にあるすべてのビットの(and演算子)。 カウントダウンは右から左に0から始まります。
|
|||
|
|
|||
|
ビット演算のためのconjuction:
|
|||
|
|
|||
|
0 AND 0 = 0
|
|||
|
|
|||
|
0 AND 1 = 0
|
|||
|
|
|||
|
1 AND 0 = 0
|
|||
|
|
|||
|
1 AND 1 = 1
|
|||
|
|
|||
|
**構文**
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAll(number, index1, index2, index3, index4, ...)
|
|||
|
```
|
|||
|
|
|||
|
**パラメータ**
|
|||
|
|
|||
|
- `number` – integer number.
|
|||
|
- `index1`, `index2`, `index3`, `index4` – positions of bit. For example, for set of positions (`index1`, `index2`, `index3`, `index4` すべてのポジションがtrueの場合にのみtrue (`index1` ⋀ `index2`, ⋀ `index3` ⋀ `index4`).
|
|||
|
|
|||
|
**戻り値**
|
|||
|
|
|||
|
論理conjuctionの結果を返します。
|
|||
|
|
|||
|
タイプ: `UInt8`.
|
|||
|
|
|||
|
**例えば**
|
|||
|
|
|||
|
たとえば、ベース43(バイナリ)数値システムの数値は101011です。
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAll(43, 0, 1, 3, 5)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTestAll(43, 0, 1, 3, 5)─┐
|
|||
|
│ 1 │
|
|||
|
└────────────────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
別の例:
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAll(43, 0, 1, 3, 5, 2)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTestAll(43, 0, 1, 3, 5, 2)─┐
|
|||
|
│ 0 │
|
|||
|
└───────────────────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
## bitTestAny {#bittestany}
|
|||
|
|
|||
|
の結果を返します [論理和](https://en.wikipedia.org/wiki/Logical_disjunction) 与えられた位置にあるすべてのビットの(または演算子)。 カウントダウンは右から左に0から始まります。
|
|||
|
|
|||
|
ビットごとの操作のための分離:
|
|||
|
|
|||
|
0 OR 0 = 0
|
|||
|
|
|||
|
0 OR 1 = 1
|
|||
|
|
|||
|
1 OR 0 = 1
|
|||
|
|
|||
|
1 OR 1 = 1
|
|||
|
|
|||
|
**構文**
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAny(number, index1, index2, index3, index4, ...)
|
|||
|
```
|
|||
|
|
|||
|
**パラメータ**
|
|||
|
|
|||
|
- `number` – integer number.
|
|||
|
- `index1`, `index2`, `index3`, `index4` – positions of bit.
|
|||
|
|
|||
|
**戻り値**
|
|||
|
|
|||
|
論理disjuctionの結果を返します。
|
|||
|
|
|||
|
タイプ: `UInt8`.
|
|||
|
|
|||
|
**例えば**
|
|||
|
|
|||
|
たとえば、ベース43(バイナリ)数値システムの数値は101011です。
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAny(43, 0, 2)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTestAny(43, 0, 2)─┐
|
|||
|
│ 1 │
|
|||
|
└──────────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
別の例:
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitTestAny(43, 4, 2)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitTestAny(43, 4, 2)─┐
|
|||
|
│ 0 │
|
|||
|
└──────────────────────┘
|
|||
|
```
|
|||
|
|
|||
|
## ビット数 {#bitcount}
|
|||
|
|
|||
|
数値のバイナリ表現で設定されたビット数を計算します。
|
|||
|
|
|||
|
**構文**
|
|||
|
|
|||
|
``` sql
|
|||
|
bitCount(x)
|
|||
|
```
|
|||
|
|
|||
|
**パラメータ**
|
|||
|
|
|||
|
- `x` — [整数](../../sql_reference/data_types/int_uint.md) または [浮動小数点](../../sql_reference/data_types/float.md) 番号 この関数は、メモリ内の値表現を使用します。 浮動小数点数をサポートすることができます。
|
|||
|
|
|||
|
**戻り値**
|
|||
|
|
|||
|
- 入力番号内のビット数を一つに設定します。
|
|||
|
|
|||
|
この関数は入力値を大きな型に変換しません ([記号の拡張子](https://en.wikipedia.org/wiki/Sign_extension)). 例えば, `bitCount(toUInt8(-1)) = 8`.
|
|||
|
|
|||
|
タイプ: `UInt8`.
|
|||
|
|
|||
|
**例えば**
|
|||
|
|
|||
|
例えば、数333を取ります。 そのバイナリ表現:00000000101001101。
|
|||
|
|
|||
|
クエリ:
|
|||
|
|
|||
|
``` sql
|
|||
|
SELECT bitCount(333)
|
|||
|
```
|
|||
|
|
|||
|
結果:
|
|||
|
|
|||
|
``` text
|
|||
|
┌─bitCount(333)─┐
|
|||
|
│ 5 │
|
|||
|
└───────────────┘
|
|||
|
```
|
|||
|
|
|||
|
[元の記事](https://clickhouse.tech/docs/en/query_language/functions/bit_functions/) <!--hide-->
|