# Bitwise Operations

Within these castle walls be forged Mavens of Computer Science ...
— Merlin, The Coder

## Curriculum

 Coder Merlin™  Computer Science Curriculum Data Unit: Boolean algebra Experience Name: Bitwise Operations (W1015) Knowledge and skills: §10.326 Demonstrate understanding and proficiency in the use of bitwise operations Topic areas: Boolean algebra Classroom time (average): 10 minutes Study time (average): 60 minutes Successful completion requires knowledge: understand the use of bitwise operations with common Boolean operators Successful completion requires skills: demonstrate proficiency in using bitwise operations with common Boolean operators

## Bitwise Operations

A bitwise operation operates on one or more bit patterns at the level of their individual bits. It is a fast, simple action supported by the ALU (Arithmetic Logic Unit) and is used to manipulate values for comparisons and calculations. The normal operation is simply applied bit by bit.

### NOT

```NOT 0111
————————
= 1000
```
Caution
Note that because zero bits are "flipped" to one bits the actual size of the word matters. For example,
```NOT 0111
= 1000
```

when considering only a four-bit word, but in the case of an eight-bit word the correct answer would be:

```  = 1111 1000
```

As such, it's usually best to left-pad the operand with zeroes before proceeding. For example,

```NOT 0000 0111
= 1111 1000
```

### AND

The AND operation is useful for masking bits that are not interesting and then checking to see if a particular bit is set.

```    0101
AND 0011
————————
= 0001
```

### OR

```   0101
OR 0011
————————
= 0111
```

### XOR

The XOR operation is useful for inverting selected bits:

```    0101
XOR 0011
————————
= 0110
```

Because of this property, XOR is sometimes used to clear a register (to zero) by XOR’ing it with itself. In some cases this can be much faster than explicitly loading the value of 0.

```    1010
XOR 1010
————————
= 0000
```

## Exercises

Exercises
•  M1015-10  Complete  Merlin Mission Manager  Mission M1015-10.