## Bitwise Function Usage Guide

GBase 8a MPP Cluster uses the **BIGINT** (64-bit) algorithm for bitwise operations. Therefore, the maximum valid range for these operators is 64 bits.

**Note**: Bitwise operations only support numerical types.

###
1. `|`

(Bitwise OR)

**Example**

Returns the result of `29 | 15`

.

```
gbase> SELECT 29 | 15 FROM dual;
+---------+
| 29 | 15 |
+---------+
| 31 |
+---------+
1 row in set
```

**Explanation**: The bit value of 29 is `11101`

, and the bit value of 15 is `1111`

. Performing a bitwise OR operation results in `11111`

, which corresponds to the decimal value `31`

.

###
2. `&`

(Bitwise AND)

**Example**

Returns the result of `29 & 15`

.

```
gbase> SELECT 29 & 15 FROM dual;
+---------+
| 29 & 15 |
+---------+
| 13 |
+---------+
1 row in set
```

**Explanation**: The bit value of `29`

is `11101`

, and that of `15`

is `1111`

. Performing a bitwise AND operation results in `1101`

, which corresponds to the decimal value `13`

.

###
3. `^`

(Bitwise XOR)

**Examples**

Example 1: Returns the result of `1 ^ 1`

.

```
gbase> SELECT 1 ^ 1 FROM dual;
+-------+
| 1 ^ 1 |
+-------+
| 0 |
+-------+
1 row in set
```

Example 2: Returns the result of `1 ^ 0`

.

```
gbase> SELECT 1 ^ 0 FROM dual;
+-------+
| 1 ^ 0 |
+-------+
| 1 |
+-------+
1 row in set
```

Example 3: Returns the result of `11 ^ 3`

.

```
gbase> SELECT 11 ^ 3 FROM dual;
+--------+
| 11 ^ 3 |
+--------+
| 8 |
+--------+
1 row in set
```

**Explanation**: The bit value of `11`

is `1011`

, and that of `3`

is `0011`

. Performing a bitwise XOR operation results in `1000`

, which corresponds to the decimal value `8`

.

###
4. `<<`

(Left Shift - BIGINT)

**Example**

Returns the result of `1 << 2`

.

```
gbase> SELECT 1 << 2 FROM dual;
+--------+
| 1 << 2 |
+--------+
| 4 |
+--------+
1 row in set
```

**Explanation**: The bit value of `1`

is `0001`

. Shifting two positions to the left results in `0100`

, which corresponds to the decimal value `4`

.

###
5. `>>`

(Right Shift - BIGINT)

**Example**

Returns the result of `4 >> 2`

.

```
gbase> SELECT 4 >> 2 FROM dual;
+--------+
| 4 >> 2 |
+--------+
| 1 |
+--------+
1 row in set
```

**Explanation**: The bit value of `4`

is `0100`

. Shifting two positions to the right results in `0001`

, which corresponds to the decimal value `1`

.

###
6. `BIT_COUNT(N)`

**Function Description**: Returns the total number of bits set to 1 in the parameter `N`

.

**Example**

Returns the number of bits set to 1 in `29`

.

```
gbase> SELECT BIT_COUNT(29) FROM dual;
+---------------+
| BIT_COUNT(29) |
+---------------+
| 4 |
+---------------+
1 row in set
```

**Explanation**: The bit value of `29`

is `11101`

, and the number of bits set to 1 is `4`

.

These are the main bitwise functions in GBase 8a MPP Cluster. Thank you for reading!

## Top comments (0)