- Register Transfer
- Arithmetic (Addition, subtraction, ...) Data is numeric, and bits with a word are interdependent.
- Logic (AND, OR, ...) Data is not numeric, and bits are independent of each other. The same logical operation is applied to each bit in a word in parallel.
- Shift. Data may or may not be numeric. All bits are moved the same number of positions left or right.

**Table 4.2. **

Example | Description |
---|---|

R3 ← R1 + R2 | Addition |

R3 ← R1 - R2 (R1 + R2' + 1) | Subtraction |

R2 ← R2' | Complement (really a logic operation) |

R2 ← -R2 (R2' + 1) | Negation |

R1 ← R1 + 1 | Increment |

R1 ← R1 - 1 | Decrement |

Increment and decrement can be done with combinational incrementers and decrementers, counter registers, or by adding a 1. ( Where does the 1 come from? )

Multiply and divide are not often implemented as microoperations due to the amount of time they require. They are usually implemented as a multi-clock-cycle routine of shifts and adds.

Figure 4-7: 4-bit adder/subtractor.

Figure 4-9: Arithmetic circuit. Analyze all select input combinations.