# Minecraft Logic Circuits

You can make just about anything in Minecraft, and that includes the computer that you’re using to run Minecraft. Of course, your computer has billions of individual transistors, so that level of complexity isn’t quite feasible. People have managed to build fully-functional computers in Minecraft, but they require months (if not years) of effort and are at best comparable to their real-life equivalents from the 1970s. The smallest building blocks, on the other hand, are fairly easily doable.

Let’s start with what computers are actually doing on a lower level. Basically everything a computer does can be boiled down to either arithmetic or a load/store operation (in essence, reading/writing memory). When you hit your keyboard, an electrical signal tells your computer that you’ve done so, and it mathematically determines what this input means and how it should respond.

A fundamental component of a CPU is the arithmetic logic unit (ALU), and one of the most important components of that is a circuit capable of performing addition and subtraction. This circuit on its own is relatively simple, as it’s purely made of combinatorial logic. However, each block within the circuit can only operate on one single binary bit, so it’s necessary to string X number of them together (where X is the number of bits we need to be able to operate on).

The easiest way to do this is to determine at each individual bit whether or not there will be a carry-over to the next bit, then send that signal in as one of the next bit’s inputs. This is known as a ripple-carry adder. However, it can be quite slow. If you have a carry-over that needs to be pushed from the very first (least significant) bit all the way over to the last bit, it has to traverse through each bit’s addition circuitry before it gets where it needs to go.

One of the most popular alternatives is to split the circuit into sections, each with its own logic that determines the carry for each individual bit within as well as the section as a whole, the latter of which gets sent out to the next section. Since the logic determining these carry signals is relatively fast, the circuit can compute the sums of all bits at practically the same time, instead of waiting for the carry signal to ripple over from the first bit to the last. This implementation is known as a carry-lookahead adder.

Shown below is a 16-bit carry-lookahead adder displaying 23451 + 30575 = 54026 in binary. Note the distant output display, top center of the image. The total volume is over 72000 blocks. 