Push-pull NOT gate and buffering

"No, no, you're not thinking; you're just being logical." - Niels Bohr

This page has details about the NOT gate and buffer. A NOT gate, negates and input so 1 becomes a 0, and vice versa. A buffer simply returns the input, i.e. 1 becomes 1. Their advantage is that they act as amplifiers, especially useful if an input signal is rather low.

The NOT gate

The NOT gate was the first and easiest gate to design. All you have to do is ensure that one push-rod does the opposite of the other as can be seen in the pictures.
The original NOT gate is very over-engineered and in many ways the NOT gate as an entity is redundant. On all the logic gates to NOT an input you only need to reverse the direction of the cog that drives the rack forward or backward. This is easily affected by simply having the input push-rod acting at the bottom or the top of the cog depending on which way you need the rack to move.
The cog's direction is different in each case, so any rack that the cog acts on will also move in an opposite direction. This is exactly the motion we require when NOTing an input. The only time an output needs to be NOTd is if we are't going to use it as an input to another gate, even then, with the available gates, a NOT gate shouldn't be required.

The Buffer

The buffer gate is effectively a modification of the NOT gate and there are several ways to construct them. I chose a simple system of differently sized cogs (24 and 8 tooth), but levers would work equally well. The idea is to take a half-stud input and convert it to a one-stud output, thereby creating an in-line amplification, albeit passively. The pictures below should show this more clearly, alternatively you can watch the video of the buffer in action.
And if you're keen to see the buffer in action there is also a video available to watch.