محمد عبدالحميد محمد أحمد الهاشمي Computer Architecture Big Picture 1

Updated Sunday July 19, 2026 1:22 PM UTC+3

AI-free 100% hand-crafted Revised 6/30/2026 – Watch highlighted words: bold = key terms, emphasized = tech vocabulary builders. Figures extend discussions with visuals and concrete examples.

Beginnings

Modern computers are digital. They rely on transistors, a basic physical building block of electronic circuits, to implement digital logic. It is well known that computers employ a language of 0s and 1s. But why? Where do 0s and 1s originate? How do you get there from transistors?

Prelim

This section briefly presents two of the most important ideas behind the modern computer (check the highlighted words). It aims to help the reader better understand what follows. It is still useful to go through, even if those ideas were familiar.

In everyday use, digital has come to mean/symbolize computer technology in general, which is not helpful here. So let's start with some working notions. A digital computer deals only with information in discrete form, that is, distinct units that can be listed and/or counted just like fingers (digits).

(a)
(b)

Hover 🔍︎ OR TOUCH

Objects in containers Alt text, natural numbers and integers (finite subsets, technically) Alt text, categories of things Alt text, or their types, or counts, or attributes are examples of discrete things. Their info is ready to be conveyed in a form suitable for a digital computer.

Audio is not naturally discrete. It must first be digitized (i.e., converted into a discrete form). The figure depicts the process in principle. Higher sampling rates and more quantization levels lead to a finer approximation of the sound waves, which our ears perceive as better-sounding audio.

Digital logic deals with the discrete Yes and No answers obtained by testing logically joined claims or propositions for truth. It is stated in an algebra-like fashion, where constants and variables may only be true or false, the logical outcomes of testing propositions. The next two figures outline key ideas. The second one illustrates a classic computer scenario.

(a)
(b)

Hover 🔍︎

Logically, A and B must be true to assert Sam is naughty (Sam may not be a boy, or maybe not all boys are naughty, or both). Note the implied yes/no question: Is Sam naughty?

Variables track the logical state of propositions. Truth tables list the outcomes for all possible values. They define a logic to act when the answer is yes. In this case, indicate the logic for testing whether Sam is naughty (AND). The complementary NAND (not-AND) is more useful when No is the active answer.

Proposition Z, in part (a) of the last figure above, is about a state that may change. A zero could occur occasionally during calculations. Thus, a tracking variable will change values, unlike those defined in part (b), which are unlikely to do so. It allows for a logic that could react dynamically under varying conditions. Or, in other words, act conditionally.

(a)
(b)

Hover 🔍︎

What to do next? The decision typically involves a zero-detection line that selects a course of action, in conjunction with a line to request the branch. If the line condition occurs, a related wire carries a distinctive physical signal. With some logic, those lines can jointly support a decision to branch away from the main course.

Variables Z and BR are set based on signals on the wires. They effectively hold the outcomes of testing the underlying propositions. AND-logic tells a computer which course to follow.

From Physical Device to Code

Physical signals tend to change continuously in the circuitry. When building digital logic, we are not concerned with the smooth variations in some of them. We only care about drastic changes. The discrete physical states corresponding to those changes may encode symbols, at least two (binary), the minimum for serious coding (one is usable, but is quite limiting). The first two numeric digit symbols, 0 and 1, were obvious choices for a computing device.

Hover 🔍︎

To simulate the digital switching actions (marked), a continuous waveform must cross a threshold to be considered to have changed state. The crossover point and whether to assign logical 1 to the high or low side depend on the physical device used to generate the signals. The actions, expressed in the circuits as physical states HIGH-LOW-HIGH-LOW, may map to 1-0-1-0, or 0-1-0-1 in some cases.

We could track ten distinct state positions to code the familiar ten numeric digits. The resulting physical machine would not do any better or more than one based on two states. It would only be more complicated.

The discrete states of interest in computer circuitry correspond to two events. The first is when an electric signal reaches a point at which a transistor starts to conduct (ON switch state). The second is the point when it ceases to do so (OFF state). The binary ON/OFF states may encode a stored value interpreted as a base-2 number, a natural binary code. (Base-2 numbers are just like decimal ones except that they are expressed in terms of powers of 2 instead of 10). Thus, a binary code may denote a decimal value. For example, the code 101 means 5 if viewed as a number. That original interpretation gave rise to the term bit for binary digit.

(a)
(b)

Hover 🔍︎

A number in base 2 is expressed in terms of powers of 2. Its numeric value is simply the sum of powers corresponding to 1s.

A number may indicate the switching positions since a binary code based on 0s and 1s can be interpreted as base 2.

Bits could also denote other things, such as a character shape, or a selector code for some circuitry, perhaps a data store or pathway, or a distinct sub-circuit (for example, an opcode, short for operation code, to denote an add circuit). Codes also may denote locations in a computer's memory. These selector codes are special. They enable circuitry to locate and access the contents of individual memory stores (hence the term address). They play another crucial role. In some contexts, an address could serve as a logical identifier of the stored item. In all cases, the numeric sense behind bits will always be there when needed due to the base-2 link.

(a)
(b)
(c)

Hover 🔍︎

Characters in Morse (grayed), an older binary coding scheme, and ASCII (ISO 8859-6), a modern one. 0s/1s may just as well replace the usual dots and dashes in Morse. The last column shows the decimal values of the ASCII bits.

Opcodes for Intel 8080 operations, specified relative to a special internal store where results are collected (accumulator).

An address tells circuitry where to find a storage unit. It also represents the stored items (e.g., the first address, location 65025 numerically, denotes 'A').

Fundamentally, 0s and 1s serve as a standard format to express both information and operations. Therefore, store them in the same memory and process them in similar ways, which simplifies the machine tremendously.

Moreover, builders could create a binary coding scheme to describe the switching state of key transistors. With a bit more circuitry, it can also instruct the device to assume an operational position by specifying the ON/OFF states those transistors should take. Alternatively, it could prompt a circuit to tell its current switching settings (perhaps to decide how to instruct it next). In other words, a binary-coded language, specific to the circuitry, naturally arises to communicate with the device. Thus, binary codes could also help manage the state, in effect, run the machine, not just serve to store and process data.

Making it Smart

The two distinct states of logical truth and falsehood may be coded by 1 and 0. Consequently, one may devise logic based on 0s and 1s to manipulate binary codes and, hence, create a logical binary state. Earlier examples showed simple deductions and decisions. A more involved one shows how logical operations could transform the codes to perform addition. The next figure illustrates how to obtain a sum of integers in base-2 code. This style of logic is described as digital since it deals only with distinct values. More intricate binary codes and processing in more complex ways require more logic and, hence, more transistors.

(a)
(b)
(c)

Hover 🔍︎

To add, a sequence of operations is applied bitwise (at the bit level). The last operation (<<) is a shift left by one bit position. Note the required truth tables in terms of 0s and 1s, where 1 is true, and XOR denotes exclusive-OR logic. At least four bits will be needed to hold the sum of 5 and 9.

After a first round, the sequence may repeat zero or more times (in this case, once). XOR logic yields an answer when the shift results in all zeros.

A computer gets into trouble when a shift discards a 1 (details beyond this discussion). It is trivial, though, to obtain the correct sum if it only occurs at the end.

To Sum Up

A modern computer employs transistors as elementary 2-state switches to create a physical basis for binary coding. The states behind the coding stem from ON/OFF switching actions. They could also underpin a language that enables the machine to communicate and to set its own state. Binary codes, in turn, form a basis for expressing a simplified truth-based version of Boolean logic (one that focuses on the values true and false, the outcomes of testing propositions). A binary state grounded in Boolean logic is essentially what gives a computer its power.

Operations and Operands: The True Language of Computers

While the switching states of transistors do naturally underlie a language of 0s and 1s, it may not be a good choice for communication. A modern computer is a complex machine. It is composed of thousands of specialized electronic circuits that contain up to hundreds of millions of transistors. Its logical state may not obviously relate to that of individual transistors (it does, however, trace back there, of course). In fact, the logical state itself is too primitive and too detailed for direct use in practice.

Therefore, a binary machine language is constructed on top of those physical switching and logical states, to work, by design, at a level meaningful to its users. It typically provides a way to specify operations, called ops for short, and the values they are applied to, called operands.

Binary codes for circuits that perform ops and coded operands, or codes for circuit parts that store and transfer them around the machine, are assembled in specific ways to form a machine instruction. The instruction is then a binary coding of a command that the machine can run. Bits that encode the ops and operands cause some transistors to eventually take on the ON/OFF states needed to execute the instruction.

Hover 🔍︎

To add 5 to an operand in a store (labeled CX) and put the result in another store (AX), a user may consult some code tables to put together (assemble) a machine instruction. The codes assigned to operations and other machine resources, such as operand stores, reflect details specific to the machine and the coding choices made by its designers.

Instructions may be combined in various ways to synthesize higher operations and, as a result, create a machine code. Scheduling instructions to get the machine to perform tasks was perhaps what gave rise to the terms program and programming.

Hover 🔍︎

The figure shows the 0s and 1s of a genuine instruction (logical and physical bits are not), the last one in a RISC-V machine code program that flips the signs of some integers stored in memory. Bits from machine language obscure those of transistors and Boolean logic, where they originate.

Machine language creates an abstraction layer that hides details of the machine's design and implementation from its users. It abstracts physical transistor states into usable instructions. Lower 0s and 1s are for machine builders. Occasionally, a bit in machine language maps directly to a logical one, which, in turn, maps to a physical bit.

Assembling machine code by hand is a simple but tedious task. It is also highly procedural, so that a machine can perform it. So users may express that code in a less cryptic format that an assembler program could process. The resulting language was relatively easier to work with than bare 0s and 1s. It freed users to focus on operations and operands. Programming systems of all types and all levels above machine code seek to facilitate communicating that information in terms that are more meaningful to humans and the problems they are trying to solve.

Hover 🔍︎

Assembly language offers a relatively friendlier way to convey operation and operand information clearly. However, it remains specific to the machine since it merely describes its instructions and conventions.

To Sum Up

Machine language, the circuitry-specific language of ops and operands, is the language of 0s and 1s that users (programmers and users of their programs) experience or face in some way, shape, or form. It is the basis of a binary code defined at the functional level. Assembly notation, itself a form of code, is just a convenient shorthand for that language. It is still closely tied to the physical circuitry and thus is also low-level.

In Conclusion

The breakthrough feature of modern computers is binary coding that a) may be transformed by rules of logic and b) maps to simple physical switching devices, leading to relatively simple hardware.

So, to answer the questions posed at the beginning. The 0s and 1s associated with modern computers, most likely the ones depicted in popular culture, are those of machine language, based on a logical state generated by the 0s and 1s of physical switching devices, mainly transistors, for now.

Any physical switch would do, but the transistor was transformative (see the Spectrum magazine link). It is highly reliable, tiny in both size and cost, especially the modern ones. It enabled the faster, more logically complex computing machines of today, and continues to do so as of this writing.

To Sum Up

Hover 🔍︎ + Click

Three key ingredients make up modern computers: physical ON/OFF switches, binary coding, and a true/false switching version of Boolean logic, where a variable represents testing a logical proposition for truth rather than the proposition itself.