The exam review is mostly a homework review session, but with an emphasis of double-checking answers for correctness.

## Reference material

It’s always a good idea to know binary numbers and ASCII, but you can also use the binary numbers reference and Unicode ASCII table in the exam.

## Topics covered

- Data representation — signed and unsigned
- Bases for numbers — binary, decimal and hexadecimal
- Addition and bit-wise operators of Java and C
- Binary logic operations — NOT, AND, OR, NAND, NOR
- Truth table representation
- Logic gate representation
- Transistor implementation

- Combinational logic
- Truth tables
- Boolean expressions
- Acyclic networks of gates

- Common combinational elements — multiplexers and ROMs

The most significant topics to study are anything covered in the first three homeworks or the first three labs.

## Exams to review

Review the questions that are relevant to the exam topics. The most recent exams are the most relevant.

## A few things to get straight

`X``Y``Z`≠`X``Y``Z``!(X && Y && Z) != !X && !Y && !X`

- de Morgan’s law
- It’s the same boolean operators you used in Java.
- It’s the same bitwise operators you never used in Java.
- Following the principles may result in a longer answer, but the answer is more likely to be correect.
- Check your answers.
- Multiplexers and ROMs are important.
- Learn the powers of 2 up to 2
^{9} - 2
^{n+m}= 2^{n}2^{m} - You can’t look at a string of bits and know if it is signed or twos-complement. Someone has to tell you.
- Overflow occurs when you perform an operation on
`n`-bit numbers and the result can’t be represented in`n`bits. - Overflow
*never*occurs when two`n`-bit twos-complement numbers of*different*signs are added `-n`

is`~n + 1`

in Java.- If in doubt, explain your reasoning.