You may not know it, but all logic gates can be made from NOT and OR gates alone. So, I set out to make them!
Next, XOR. To start with, I took the basic definition of XOR: exclusive OR, or OR excluding the case where both inputs are true. So, I needed an OR gate, as well as a NAND gate (which is only false when both inputs are true) and then to AND the two. Hence:
Which is fine, except it isn’t entirely NOTs and ORs, which is sort of the point of what I’m doing. So, I substituted in a NAND and an AND (a new tongue twister!) made from NOT gates.
I don’t know if this is the best method, as there’s probably a way to do it that doesn’t translate into other logic gates, but it works.
By this point, I was looking for excuses to make as many as I could (I was using a program which I had located just for this and it’s quite great, check out logiccircuit.org) so I made a NOR gate. Why not (no pun intended).
(Again, probably a better way, I’d have to stare at the truth table and find something else)
How about a 2-bit adder? Maybe another time.