Why do computers work in binary?

amosrivera picture amosrivera · Mar 2, 2011 · Viewed 13.6k times · Source

I have done some searching but have not found a truly satisfactory answer. As a developer i want to invest the necessary time in understanding this, thus i am looking for a complete explanation on this and feel free to provide any useful references.

Thanks.

Answer

nelaaro picture nelaaro · Mar 2, 2011

I would recommend buying this book by Andrew S. Tanenbaum. He developed one of the predecessors to Linux called Minix. I used Structured Computer Organization as part of my university course.

Why computers use binary is not just a matter of switch context.

Relative to a reference voltage of say 3v. +1v(4v) = true or 1 and -1v(2v) = false or 0.

It also has to do with the most efficient method of creating controlling or logic circuits. This has to do with cost of implementation. How much does it cost to build circuits that work with binary compared to circuits that work with decimal or analogue see this answer.

If you compare how many billions of binary circuit transistors fit on to a modern CPU. The cost of doing that with say decimal (or analogue) system increases exponentially for every digit you want to add as you now have to add that much more controlling circuitry.

If you want to understand some of the most important contributing components that have helped to make binary the default standard for logic and controlling circuitry read and understand the following topics from Wikipedia. It will take about 4 hours to read through the most important topics, which have to do with some of the electrical engineering used to create the circuits.

I tried to be complete in this list of concepts you need to understand how the actual switches work and why they are used. As well as why Binary Arithmetic is such an efficient form of computation in hardware.

  • Transistor types Understand the pnp and npn transistor types to understand how the actual circuity that forms the switches works. These circuits are very cheap to make and can be shrunk to minuscule(nano meter) size
  • Logic Circuitry. If you understand the basic logic circuitry you will understand how the actual transistor types are used to implement them. These relate to some of the programming constructs such as "and &&" "or ||" and "if, branch" constructs.
  • DigitalCircuitry has a use full disadvantages section comparing analog and digital circuits
  • NAND Logic Gate is important as all other logic gate circuits can be implemented using just this one logic gate. Simplifying the manufacturing process, as the complexity of the machinery used to create the the circuits can be streamlined.
  • Adder Circuits To understand how basic addition is done using logic gates.
  • Twos Complement this is very help full in understand number representation in actual CPUs. It is also very cheap to implement this type of arithmetic in a CPU, as it requires fewer transistors. For instance a simple addition circuitry is all that is need to do addition and subtraction. If you add a negative number you get the correct answer ie +7 + (-4) = +3. This also helps to understand the integer overflow
  • Binary_number
  • These are some of the most used circus for controlling other circuits. These control when circuits are switched on and off. Decoder Encoder How (if or branch) condition logic is implemented.
  • Multiplexer Is fundamental to how routing is done. In a CPU, BUS and in a network. One of the most common logic circuits found in most digital devices.

Now for some hard cores stuff. C. and C++ is used to write device drivers that speak to actual hardware. If you really want to get into how certain devices work, your CPU, and or external devices learn Assembler. You will begin to see how you can switch off a device by setting a certain device register to a specific value, that will be read by a logic circuit to change the devices state. For example you will understand why (0101) base2 = 5 (binary related stuff) will route a specific way through the circuits to switch the device on and off.