# 9.6. 二元字串函式及運算子

This section describes functions and operators for examining and manipulating bit strings, that is values of the types`bit`and`bit varying`. Aside from the usual comparison operators, the operators shown in[Table 9.13](https://www.postgresql.org/docs/10/static/functions-bitstring.html#functions-bit-string-op-table)can be used. Bit string operands of`&`,`|`, and`#`must be of equal length. When bit shifting, the original length of the string is preserved, as shown in the examples.

**Table 9.13. Bit String Operators**

| Operator | Description         | Example               | Result        |            |         |          |            |
| -------- | ------------------- | --------------------- | ------------- | ---------- | ------- | -------- | ---------- |
| \`       |                     | \`                    | concatenation | \`B'10001' |         | B'011'\` | `10001011` |
| `&`      | bitwise AND         | `B'10001' & B'01101'` | `00001`       |            |         |          |            |
| \`       | \`                  | bitwise OR            | \`B'10001'    | B'01101'\` | `11101` |          |            |
| `#`      | bitwise XOR         | `B'10001' # B'01101'` | `11100`       |            |         |          |            |
| `~`      | bitwise NOT         | `~ B'10001'`          | `01110`       |            |         |          |            |
| `<<`     | bitwise shift left  | `B'10001' << 3`       | `01000`       |            |         |          |            |
| `>>`     | bitwise shift right | `B'10001' >> 2`       | `00100`       |            |         |          |            |

The followingSQL-standard functions work on bit strings as well as character strings:`length`,`bit_length`,`octet_length`,`position`,`substring`,`overlay`.

The following functions work on bit strings as well as binary strings:`get_bit`,`set_bit`. When working with a bit string, these functions number the first (leftmost) bit of the string as bit 0.

In addition, it is possible to cast integral values to and from type`bit`. Some examples:

```
44::bit(10)                    
0000101100

44::bit(3)                     
100

cast(-44 as bit(12))           
111111010100

'1110'::bit(4)::integer        
14
```

Note that casting to just“bit”means casting to`bit(1)`, and so will deliver only the least significant bit of the integer.

## Note

Casting an integer to`bit(n)`copies the rightmost`n`bits. Casting an integer to a bit string width wider than the integer itself will sign-extend on the left.
