 we're going to use logic gates as the fundamental abstraction for our hardware. Below this level, we can implement our logic gates with transistors. But it turns out the actual method of implementing these logic gates changes relatively frequently. So we're not going to worry about how our logic gates are actually implemented. We're just going to use them as the building blocks for creating our architecture. We're primarily going to be working with these four different logic gates. And we will have symbols for each of them. Our AND gate takes two inputs, produces one output. Similarly, our OR gate takes two inputs and produces one output. Our exclusive OR gate looks pretty similar to an OR gate actually. So we've got this extra curve at the back. Our NOT gate is a little different. If we just have a NOT gate by itself, it can be drawn like this. But it's frequently applied to one of these other gates as well. If I wanted to draw a NAND gate, I would start with the AND gate. And I would put a circle on the output. So this would apply a NOT to the output of my AND. And then put that on that line going out. If I wanted a NOR gate, I would start with an OR gate and add a circle at the end. And the circle will represent the NOT. Well, the rest of the thing represents the basic gate that we've got here. Using these four gates, we will be able to build all of the hardware that we're actually interested in working with.