All data in a modern-day computer is represented by microscopic, 2-state switches. These switches can either be on, or off; there are no other existing states for these switches. These switches are called transistors.
When the switch is in the off-state, represented by 02, the circuit is open, and there is no power flowing through the switch. When the switch is in the on-state, represented as 12, the circuit is closed, and there is power flowing through the switch.
This process can be roughly equated to basic household light switches. When the light switch is in position 12, the circuit is closed, and the light is operating. When the light switch is in position 02, the circuit is open, and the light is non-operational. Assuming the lack of potentiometers within the circuit, no other state exists within the light switch.
Von Neumann computer technology has not currently advanced to the point where minor power fluctuations within a circuit, can be detected (economically), therefore, von Neumann computers are only able to understand these basic 2-state switches.
This limitation meant that the first stored computer programmers had to write all the computer’s instructions using a base 2 numbering system, known as binary. Unlike the n10 decimal numbering system, the n2 numbering system can only be represented using the digits 0 and 1.
Instructions written using the n2 numbering system are known as Machine Language Instructions. Machine language is a platform-dependent language, i.e., each machine type will have its own machine language set. Machine language is a very important concept, because it is the only way to communicate directly with a stored program computer.
Development of machine language instructions requires very highly trained, and skilled, computer programmers, and is an error-prone process. Machine language itself is not error-prone; however, the ability of even the most highly skilled computer programmers to read and write in an n2-based language is somewhat lacking.