---
id: t127
tags: [binary]
created: Saturday, April 20, 2024
---

# Bitwise operators

In addition to mathematical, logical and comparison operators, there are
_bitwise operators_. These operators execute conditions based on the actual bits
of a value rather than the values that the bits are encoded to represent.

Bitwise operators are typically represented with single characters of existing
operators, e.g. `&` instead of `&&`:

| Bitwise operation | Operator      |
| ----------------- | ------------- |
| AND               | `&`           |
| OR                | (single pipe) |
| NOT               | `~`           |

An example of using the `&` operator:

```py
x = 5
y = 3
a = x & y
b = x | y
```

The value of `a` will be 1. The reason is we are looking at the bit values of
`x` and `y` and then applying Boolean AND to each bit:

```
x = 5 = 0101
y = 3 = 0011
a = 1 = 0001
```

Working from right to left for each column:

- true and true = true
- false and true = false
- true and false = false
- false and false = false

This leaves us with 0001 which is equal to 1 in binary and denary.

For the case of bitwise OR we get 7 as the result of `x | y`:

```
x = 5 = 0101
y = 3 = 0011
b = 7 = 0111
```

- true or true = true
- false or true = true
- true or false = true
- false or false = true

This leaves us with 0111 which is equal to 7 in denary.

## Why use them?

Bitwise operations are more of a hallmark of lower-level programming. As bit
operations are the fastest and lowest level of computation, being able to
directly access and operate on bits within a programming language can be
beneficial when efficiency and speed of execution is a factor or when memory is
constrained.

## Related notes
