DEV Community

Cong Li
Cong Li

Posted on

Introduction to Bitwise Functions in GBase 8a MPP Cluster

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Example 2: Returns the result of 1 ^ 0.

gbase> SELECT 1 ^ 0 FROM dual;
+-------+
| 1 ^ 0 |
+-------+
|     1 |
+-------+
1 row in set
Enter fullscreen mode Exit fullscreen mode

Example 3: Returns the result of 11 ^ 3.

gbase> SELECT 11 ^ 3 FROM dual;
+--------+
| 11 ^ 3 |
+--------+
|      8 |
+--------+
1 row in set
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)