Computer Organization and Architecture Study Notes

Fundamental Concepts of Computer Organization and Architecture

Computer Architecture encompasses the detailed design and structural organization of computer systems. A computer system can be examined from multiple structural perspectives, ranging from external physical user interfaces to internal electronic hardware components and high-level architectural block diagrams.

From an external perspective, traditional desktop systems consist of output devices such as display monitors and audio speakers, along with input devices including keyboards and mice. The system unit housing contains central hardware components, including the processor, main memory, hard disk drive, DVD-ROM drive, graphics card, and Ethernet interface. Modern portable systems, such as laptops and smartphones, integrate these interfaces directly into compact forms featuring touchpads, touchscreens, wireless connectivity modules, specialized sensors, SD card slots, specific battery capacities, optimized weight profiles, and custom display screen dimensions.

From an internal hardware perspective, the system centers on printed circuit boards such as desktop motherboards, laptop mainboards, and high-density mobile logic boards (such as the iPhone 6 board manufactured by Chipworks). These assemblies house the central processing unit socket, heat sink and cooling fan assemblies, expansion slots, random-access memory slots, and integrated chipset controllers.

At a high functional level, a digital computer is structured into four primary components:

  1. Central Processing Unit (CPU): Executes software instructions and controls operational timing.

  2. Main Memory: Stores active program instructions and operational data.

  3. Input/Output (I/O) Devices: Receives external input data and generates processed output results.

  4. System Bus: Serves as the interconnecting communication pathway that transfers data, address, and control signals between the CPU, Main Memory, and I/O devices.


High-Level View of Computer System

Computer programming relies on a hierarchy of programming languages. High-level languages are designed to be human-readable and express algorithms in structured logical statements. Low-level languages (machine languages) consist of code that physical computer hardware can execute directly. Translation between high-level instructions and low-level machine codes is performed by software tools such as interpreters and compilers.


Language Translation Hierarchy

Data Representation and Register Data Types

Binary information inside digital computers is stored within memory units or internal processor registers. Registers store two fundamental categories of binary information: control information and data.

Control information consists of individual bits or groups of bits that specify the exact sequence of command signals required to manipulate data stored in other registers.

Data refers to numerical values and binary-coded information. The data types stored within processor registers are classified into three primary categories:

  1. Numbers used in arithmetic computations.

  2. Letters of the alphabet used in general data processing.

  3. Discrete symbols used for specialized control and formatting purposes.

Human communication relies on words, alphabetic characters, and decimal symbols. Because physical digital computing hardware operates strictly on discrete electronic signals, incoming data must be converted into electronic pulses. In binary systems, the absence of an electronic pulse represents a logical 00, while the presence of an electronic pulse represents a logical 11.

Each binary digit is called a bit. Standard binary groupings are defined as follows:

  • Bit: A single binary digit (00 or 11).

  • Nibble: A contiguous group of four binary bits (for example, 11011101).

  • Byte: A contiguous group of eight binary bits (for example, 1100101011001010).

To translate human-readable inputs into computer-compatible numeric formats, standardized encoding schemes such as ASCII assign unique numerical values to every number, character, and symbol.

Fundamental Number Systems

Digital computing systems utilize four main positional number systems: Decimal, Binary, Octal, and Hexadecimal.

In the Decimal Number System, the base (radix) is 1010. It employs ten distinct symbols: 0,1,2,3,4,5,6,7,8,90, 1, 2, 3, 4, 5, 6, 7, 8, 9. The minimum digit value is 00 and the maximum digit value is 99. Each positional digit represents a specific power of base 1010. This system is universally used in human calculation.

In the Binary Number System, the base (radix) is 22. It employs two distinct symbols: 00 and 11. Each digit represents a power of base 22. Computers rely natively on the binary system because basic electronic storage components, such as flip-flops, naturally store two stable states (00 or 11).

In the Octal Number System, the base (radix) is 88. It employs eight distinct symbols: 0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7. Each positional digit represents a power of base 88. Because 23=82^3 = 8, every single octal digit maps directly to a group of three binary bits. Octal notation is primarily used to represent long binary strings in a compact form.

In the Hexadecimal Number System, the base (radix) is 1616. It employs sixteen distinct symbols: numbers 0,1,2,3,4,5,6,7,8,90, 1, 2, 3, 4, 5, 6, 7, 8, 9 and alphabetic letters A,B,C,D,E,FA, B, C, D, E, F. The letters AA through FF correspond to decimal values 1010 through 1515 respectively (A=10A = 10, B=11B = 11, C=12C = 12, D=13D = 13, E=14E = 14, F=15F = 15). Because 24=162^4 = 16, every hexadecimal digit maps directly to a group of four binary bits. Hexadecimal is termed an alphanumeric system and is used to express byte-organized computer memory data concisely.

System

Base

Symbols Used

Used by Humans?

Used in Computers?

Decimal

1010

0,1,2,3,4,5,6,7,8,90, 1, 2, 3, 4, 5, 6, 7, 8, 9

Yes

No

Binary

22

0,10, 1

No

Yes

Octal

88

0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7

No

No

Hexadecimal

1616

0,1,×,9,A,B,C,D,E,F0, 1, \times, 9, A, B, C, D, E, F

No

No

The comparative counting sequence across all four number systems from decimal 00 through 2323 is formatted below:

Decimal

Binary

Octal

Hexadecimal

00

00

00

00

11

11

11

11

22

1010

22

22

33

1111

33

33

44

100100

44

44

55

101101

55

55

66

110110

66

66

77

111111

77

77

88

10001000

1010

88

99

10011001

1111

99

1010

10101010

1212

AA

1111

10111011

1313

BB

1212

11001100

1414

CC

1313

11011101

1515

DD

1414

11101110

1616

EE

1515

11111111

1717

FF

1616

1000010000

2020

1010

1717

1000110001

2121

1111

1818

1001010010

2222

1212

1919

1001110011

2323

1313

2020

1010010100

2424

1414

2121

1010110101

2525

1515

2222

1011010110

2626

1616

2323

1011110111

2727

1717

Number System Base Conversions

Converting integer numbers between bases involves systematic division or positional weighted summation.

To convert an integer from Decimal to Binary, divide the decimal integer repeatedly by 22 and record the remainder of each step. The final binary string is constructed by reading the remainders from bottom to top (least significant bit to most significant bit).

To determine the binary equivalent of (36)10(36)_{10}:

3636 % 2 = 18 \quad \text{remainder } 0

1818 % 2 = 9 \quad \text{remainder } 0

99 % 2 = 4 \quad \text{remainder } 1

44 % 2 = 2 \quad \text{remainder } 0

22 % 2 = 1 \quad \text{remainder } 0

11 % 2 = 0 \quad \text{remainder } 1

Reading remainders upward yields: (36)10=(100100)2(36)_{10} = (100100)_2

To convert an integer from Decimal to Octal, divide the decimal integer repeatedly by 88 and collect remainders bottom-to-top.

To determine the octal equivalent of (359)10(359)_{10}:

359359 % 8 = 44 \quad \text{remainder } 7

4444 % 8 = 5 \quad \text{remainder } 4

55 % 8 = 0 \quad \text{remainder } 5

Reading remainders upward yields: (359)10=(547)8(359)_{10} = (547)_8

To convert an integer from Decimal to Hexadecimal, divide the decimal integer repeatedly by 1616 and collect remainders bottom-to-top, replacing remainders from 1010 through 1515 with corresponding hex letters AA through FF.

To determine the hexadecimal equivalent of (5112)10(5112)_{10}:

51125112 % 16 = 319 \quad \text{remainder } 8

319319 % 16 = 19 \quad \text{remainder } 15 \, (F)

1919 % 16 = 1 \quad \text{remainder } 3

11 % 16 = 0 \quad \text{remainder } 1

Reading remainders upward yields: (5112)10=(13F8)16(5112)_{10} = (13F8)_{16}

To convert from Binary to Decimal, multiply each binary bit by its positional weight 2n2^n (where nn is the bit index from right to left starting at 00) and sum all weighted products.

To determine the decimal equivalent of (11010)2(11010)_2:

Bit Position 4: 24×1=16×1=162^4 \times 1 = 16 \times 1 = 16

Bit Position 3: 23×1=8×1=82^3 \times 1 = 8 \times 1 = 8

Bit Position 2: 22×0=4×0=02^2 \times 0 = 4 \times 0 = 0

Bit Position 1: 21×1=2×1=22^1 \times 1 = 2 \times 1 = 2

Bit Position 0: 20×0=1×0=02^0 \times 0 = 1 \times 0 = 0

Sum of weighted bits: 16+8+0+2+0=2616 + 8 + 0 + 2 + 0 = 26

Therefore: (11010)2=(26)10(11010)_2 = (26)_{10}

To convert from Binary to Octal, partition the binary bits into groups of three starting from right to left. Convert each 3-bit group into its single octal digit using standard 4-2-14\text{-}2\text{-}1 position weighting.

To determine the octal equivalent of (010111)2(010111)_2:

Grouping into sets of 3 bits: 010010 and 111111

First group 0102=(4×0)+(2×1)+(1×0)=2010_2 = (4 \times 0) + (2 \times 1) + (1 \times 0) = 2

Second group 1112=(4×1)+(2×1)+(1×1)=7111_2 = (4 \times 1) + (2 \times 1) + (1 \times 1) = 7

Therefore: (010111)2=(27)8(010111)_2 = (27)_8

To convert from Binary to Hexadecimal, partition the binary bits into groups of four starting from right to left. Convert each 4-bit group into its single hexadecimal digit using standard 8-4-2-18\text{-}4\text{-}2\text{-}1 position weighting.

To determine the hexadecimal equivalent of (11001011)2(11001011)_2:

Grouping into sets of 4 bits: 11001100 and 10111011

First group 11002=8+4+0+0=12 (C)1100_2 = 8 + 4 + 0 + 0 = 12 \, (C)

Second group 10112=8+0+2+1=11 (B)1011_2 = 8 + 0 + 2 + 1 = 11 \, (B)

Therefore: (11001011)2=(CB)16(11001011)_2 = (CB)_{16}

To convert from Octal to Decimal, multiply each octal digit by its positional weight 8n8^n and sum the results.

To determine the decimal equivalent of (456)8(456)_8:

Position 2: 82×4=64×4=2568^2 \times 4 = 64 \times 4 = 256

Position 1: 81×5=8×5=408^1 \times 5 = 8 \times 5 = 40

Position 0: 80×6=1×6=68^0 \times 6 = 1 \times 6 = 6

Sum of weighted digits: 256+40+6=302256 + 40 + 6 = 302

Therefore: (456)8=(302)10(456)_8 = (302)_{10}

To convert from Octal to Binary, expand each individual octal digit directly into its equivalent 3-bit binary pattern.

To determine the binary equivalent of (231)8(231)_8:

Octal digit 2=01022 = 010_2

Octal digit 3=01123 = 011_2

Octal digit 1=00121 = 001_2

Combining binary groups: (231)8=(010011001)2(231)_8 = (010011001)_2

To convert from Octal to Hexadecimal, expand the octal digits into 3-bit binary groups, combine them into a single binary string, and regroup the bits into 4-bit sets from right to left to evaluate as hexadecimal digits.

To determine the hexadecimal equivalent of (2327)8(2327)_8:

Convert octal to binary: 2→0102 \rightarrow 010, 3→0113 \rightarrow 011, 2→0102 \rightarrow 010, 7→1117 \rightarrow 111

Combined binary string: 0100110101112010011010111_2

Regroup into 4-bit sets: 0100110101110100 \quad 1101 \quad 0111

01002=40100_2 = 4

11012=8+4+0+1=13 (D)1101_2 = 8 + 4 + 0 + 1 = 13 \, (D)

01112=0+4+2+1=70111_2 = 0 + 4 + 2 + 1 = 7

Therefore: (2327)8=(4D7)16(2327)_8 = (4D7)_{16}

To convert from Hexadecimal to Decimal, multiply each hex digit by its positional weight 16n16^n and sum the results.

To determine the decimal equivalent of (B14)16(B14)_{16}, noting B=11B = 11:

Position 2: 162×11=256×11=281616^2 \times 11 = 256 \times 11 = 2816

Position 1: 161×1=16×1=1616^1 \times 1 = 16 \times 1 = 16

Position 0: 160×4=1×4=416^0 \times 4 = 1 \times 4 = 4

Sum of weighted digits: 2816+16+4=28362816 + 16 + 4 = 2836

Therefore: (B14)16=(2836)10(B14)_{16} = (2836)_{10}

To convert from Hexadecimal to Binary, expand each hexadecimal digit directly into its equivalent 4-bit binary pattern.

To determine the binary equivalent of (5AF)16(5AF)_{16}, noting A=10A = 10 and F=15F = 15:

Hex digit 5=010125 = 0101_2

Hex digit A=10102A = 1010_2

Hex digit F=11112F = 1111_2

Combining binary groups: (5AF)16=(010110101111)2(5AF)_{16} = (010110101111)_2

To convert from Hexadecimal to Octal, expand each hex digit into a 4-bit binary group, combine into a unified binary string, and regroup into 3-bit sets from right to left to evaluate as octal digits.

To determine the octal equivalent of (2B6)16(2B6)_{16}, noting B=11B = 11:

Convert hex to binary: 2→00102 \rightarrow 0010, B→1011B \rightarrow 1011, 6→01106 \rightarrow 0110

Combined binary string: 0010101101102001010110110_2

Regroup into 3-bit sets: 001010110110001 \quad 010 \quad 110 \quad 110

0012=1001_2 = 1

0102=2010_2 = 2

1102=6110_2 = 6

1102=6110_2 = 6

Therefore: (2B6)16=(1266)8(2B6)_{16} = (1266)_8

Fractional and Floating-Point Base Conversions

Converting numbers with fractional components requires distinct calculations for the integer part and the fractional part.

For Decimal to Binary fractional conversion, convert the integer part through successive division by 22. Convert the fractional part through repeated multiplication by 22; the integer result of each multiplication step forms the binary fractional bit sequence generated from top to bottom.

To identify the binary number represented by (10.625)10(10.625)_{10}, analyze both parts:

Integer part (10)10(10)_{10}:

1010 % 2 = 5 \quad \text{remainder } 0

55 % 2 = 2 \quad \text{remainder } 1

22 % 2 = 1 \quad \text{remainder } 0

11 % 2 = 0 \quad \text{remainder } 1

Integer binary = 101021010_2

Fractional part (0.625)10(0.625)_{10}:

0.625×2=1.250→10.625 \times 2 = 1.250 \rightarrow 1

0.250×2=0.500→00.250 \times 2 = 0.500 \rightarrow 0

0.500×2=1.000→10.500 \times 2 = 1.000 \rightarrow 1

Fractional binary = .1012.101_2

Combining both parts yields: (10.625)10=(1010.101)2(10.625)_{10} = (1010.101)_2

For Binary Fractional to Decimal conversion, calculate negative powers of 22 (2−1=0.52^{-1} = 0.5, 2−2=0.252^{-2} = 0.25, 2−3=0.1252^{-3} = 0.125, 2−4=0.06252^{-4} = 0.0625) according to the power rule x−m=1xmx^{-m} = \frac{1}{x^m}.

To find the decimal equivalent of (1001.0101)2(1001.0101)_2:

Integer part 10012=(23×1)+(22×0)+(21×0)+(20×1)=8+0+0+1=91001_2 = (2^3 \times 1) + (2^2 \times 0) + (2^1 \times 0) + (2^0 \times 1) = 8 + 0 + 0 + 1 = 9

Fractional part .01012=(2−1×0)+(2−2×1)+(2−3×0)+(2−4×1)=0+(1×14)+0+(1×116)=0+0.25+0+0.0625=0.3125.0101_2 = (2^{-1} \times 0) + (2^{-2} \times 1) + (2^{-3} \times 0) + (2^{-4} \times 1) = 0 + \left(1 \times \frac{1}{4}\right) + 0 + \left(1 \times \frac{1}{16}\right) = 0 + 0.25 + 0 + 0.0625 = 0.3125

Sum of integer and fractional components: 9+0.3125=9.31259 + 0.3125 = 9.3125

Therefore: (1001.0101)2=(9.3125)10(1001.0101)_2 = (9.3125)_{10}

For Hexadecimal Fractional to Decimal conversion, multiply digits right of the radix point by negative powers of 1616 (16−1=116=0.062516^{-1} = \frac{1}{16} = 0.0625, 16−2=1256=0.0039062516^{-2} = \frac{1}{256} = 0.00390625).

To find the decimal equivalent of (3A.2F)16(3A.2F)_{16}, noting A=10A = 10 and F=15F = 15:

Integer calculations:

161×3=4816^1 \times 3 = 48

160×10=1016^0 \times 10 = 10

Fractional calculations:

16−1×2=2×116=0.12516^{-1} \times 2 = 2 \times \frac{1}{16} = 0.125

16−2×15=15×1256=0.05859375≈0.058516^{-2} \times 15 = 15 \times \frac{1}{256} = 0.05859375 \approx 0.0585

Summing all positional weight values:

48.0000+10.0000+0.1250+0.0585=58.183548.0000 + 10.0000 + 0.1250 + 0.0585 = 58.1835

Therefore: (3A.2F)16=(58.1835)10(3A.2F)_{16} = (58.1835)_{10}

Exercise Solutions Matrix

The table below details complete multi-base fractional conversion equivalence across Decimal, Binary, Octal, and Hexadecimal representations:

Decimal

Binary

Octal

Hexadecimal

29.829.8

11101.110011…11101.110011\dots

35.63…35.63\dots

1D.CC…1D.CC\dots

5.81255.8125

101.1101101.1101

5.645.64

5.D5.D

3.1093753.109375

11.00011111.000111

3.073.07

3.1C3.1C

12.507812512.5078125

1100.100000101100.10000010

14.40414.404

C.82C.82

Digital Logic Circuits and Logic Gates

Digital logic represents electrical signals and circuit sequences using binary numbers. A logic gate is an elementary building block of a digital circuit. Most logic gates process two or more input signals to produce a single output signal.

At any given moment, every circuit terminal exists in one of two binary conditions: low (00) or high (11), which correspond to distinct physical voltage levels.

The primary logic gates and their operational rules are established as follows:

  1. OR Gate: A logic gate with two or more inputs and one output. It produces a logical high output (11) if one or more of its inputs are high (11). Its Boolean output is expressed as Z=X+YZ = X + Y (or Z=X∣YZ = X \mid Y).

Truth Table for OR Gate:

Input X

Input Y

Output Z

00

00

00

00

11

11

11

00

11

11

11

11


OR Gate Logic Symbol
  1. AND Gate: A logic gate with two or more inputs and one output. It produces a logical high output (11) only when all of its inputs are high (11). Its Boolean output is expressed as Z=X⋅YZ = X \cdot Y (or Z=X&YZ = X \& Y).

Truth Table for AND Gate:

Input X

Input Y

Output Z

00

00

00

00

11

00

11

00

00

11

11

11

  1. NOT Gate: A single-input, single-output circuit that inverts the logical state of its input. It produces a high output (11) if the input is low (00), and a low output (00) if the input is high (11). Its Boolean output is expressed as Y=XˉY = \bar{X} (or Y=∼XY = \sim X).

Truth Table for NOT Gate:

Input X

Output Y

00

11

11

00

  1. NAND Gate: A logic gate that produces an output that is false (00) only when all its inputs are true (11). The output of a NAND gate is the exact logical complement of an AND gate. Its Boolean output is expressed as Z=X⋅Y‾Z = \overline{X \cdot Y} (or Z=∼(X&Y)Z = \sim(X \& Y)).

Truth Table for NAND Gate:

Input X

Input Y

Output Z

00

00

11

00

11

11

11

00

11

11

11

00

  1. NOR Gate: A logic gate that produces a high output (11) only when all of its inputs are low (00). The output of a NOR gate is the exact logical complement of an OR gate. Its Boolean output is expressed as Z=X+Y‾Z = \overline{X + Y} (or Z=∼(X∣Y)Z = \sim(X \mid Y)).

Truth Table for NOR Gate:

Input X

Input Y

Output Z

00

00

11

00

11

00

11

00

00

11

11

00

  1. Exclusive-OR (XOR) Gate: A digital logic gate that produces a high output (11) when an odd number of inputs are true. When both inputs are identical, the output is low (00); when inputs differ, the output is high (11). Its Boolean output is expressed as Z=X⊕YZ = X \oplus Y (or Z=X ˆ YZ = X \text{ \^{} } Y).

Truth Table for XOR Gate:

Input X

Input Y

Output Z

00

00

00

00

11

11

11

00

11

11

11

00

  1. Exclusive-NOR (XNOR) Gate: A digital logic gate whose function is the logical complement of the XOR gate. Its output is true (11) when all inputs are true or when all inputs are false. Its Boolean output is expressed as Z=X⊕Y‾Z = \overline{X \oplus Y}.

Truth Table for XNOR Gate:

Input X

Input Y

Output Z

00

00

11

00

11

00

11

00

00

11

11

11

Logic gates offer significant practical advantages in electronic design. They reliably distinguish between logical state 11 and logical state 00. Logic gates serve as the basic components for flip-flops (such as an RS flip-flop constructed from two cross-coupled gates) and form the physical basis for TTL (Transistor-Transistor Logic) and CMOS (Complementary Metal-Oxide-Semiconductor) integrated circuits. Karnaugh Maps (K-maps) are used alongside logic gates to minimize algebraic expressions before physical hardware implementation.

Boolean Algebra and Circuit Optimization

Boolean algebra was developed in 1854 by George Boole in his publication An Investigation of the Laws of Thought. It is a specialized variant of elementary algebra that operates exclusively on binary truth values 00 and 11. Because it models binary choices, Boolean algebra is also termed Switching Algebra.

Decisions resulting in either YES (TRUE / 11) or NO (FALSE / 00) are binary decisions. Statements that can be determined to be True or False are truth functions or logical statements. Variables that store truth values are logical variables or binary-valued variables.

Boolean algebra is defined by foundational postulates and identities:

OR Laws:

  • A+0=AA + 0 = A

  • A+1=1A + 1 = 1

  • A+A=AA + A = A

  • A+Aˉ=1A + \bar{A} = 1

AND Laws:

  • A⋅0=0A \cdot 0 = 0

  • A⋅1=AA \cdot 1 = A

  • A⋅A=AA \cdot A = A

  • A⋅Aˉ=0A \cdot \bar{A} = 0

NOT Laws:

  • 0ˉ=1\bar{0} = 1

  • 1ˉ=0\bar{1} = 0

  • If A=0A = 0, then Aˉ=1\bar{A} = 1

  • If A=1A = 1, then Aˉ=0\bar{A} = 0

  • Aˉ‾=A\overline{\bar{A}} = A

Commutative Laws:

  • A+B=B+AA + B = B + A

  • A⋅B=B⋅AA \cdot B = B \cdot A

Associative Laws:

  • A+(B+C)=(A+B)+CA + (B + C) = (A + B) + C

  • A⋅(B⋅C)=(A⋅B)⋅CA \cdot (B \cdot C) = (A \cdot B) \cdot C

  • (A+B)+(C+D)=A+B+C+D(A + B) + (C + D) = A + B + C + D

Distributive Laws:

  • A⋅(B+C)=(A⋅B)+(A⋅C)A \cdot (B + C) = (A \cdot B) + (A \cdot C)

  • (A+B)⋅C=A⋅C+B⋅C(A + B) \cdot C = A \cdot C + B \cdot C

  • A+AˉB=A+BA + \bar{A}B = A + B

  • A+B⋅C=(A+B)⋅(A+C)A + B \cdot C = (A + B) \cdot (A + C)

Absorptive Laws:

  • A+A⋅B=AA + A \cdot B = A

  • A⋅(A+B)=AA \cdot (A + B) = A

  • A⋅(Aˉ+B)=A⋅BA \cdot (\bar{A} + B) = A \cdot B

DeMorgan's Laws:

  • A+B‾=Aˉ⋅Bˉ\overline{A + B} = \bar{A} \cdot \bar{B}

  • A⋅B‾=Aˉ+Bˉ\overline{A \cdot B} = \bar{A} + \bar{B}

Algebraic simplification reduces the total number of logic gates required to implement a logic function. For example, to simplify the expression (AB+C)(AB+D)(AB + C)(AB + D), apply Boolean laws step by step:

  1. Expand the product: AB⋅AB+AB⋅D+C⋅AB+C⋅DAB \cdot AB + AB \cdot D + C \cdot AB + C \cdot D

  2. Apply the idempotent law A⋅A=AA \cdot A = A to AB⋅ABAB \cdot AB: AB+ABD+ABC+CDAB + ABD + ABC + CD

  3. Factor out ABAB from the first two terms: AB(1+D)+ABC+CDAB(1 + D) + ABC + CD

  4. Apply the identity 1+D=11 + D = 1: AB(1)+ABC+CD=AB+ABC+CDAB(1) + ABC + CD = AB + ABC + CD

  5. Factor out ABAB from the remaining AB+ABCAB + ABC terms: AB(1+C)+CDAB(1 + C) + CD

  6. Apply the identity 1+C=11 + C = 1: AB(1)+CD=AB+CDAB(1) + CD = AB + CD

Simplification result: (AB+C)(AB+D)=AB+CD(AB + C)(AB + D) = AB + CD

Using Boolean algebra to simplify logical expressions reduces gate counts, lowering hardware costs and making digital circuit designs clearer, easier to service, and faster to execute. However, a limitation of Boolean algebra is that it strictly computes direct logic outcomes and cannot derive implied non-binary relationships.

Standard Academic References

The primary textbook for computer organization and architecture studies is:

  • M. Morris Mano, Computer System Architecture, Pearson Education, 3rd Edition, 2007.

Additional primary reference works include:

  1. Donald P. Leach and Albert Paul Malvino, Digital Principles and Applications, Tata McGraw-Hill, 5th Edition, 2003.

  2. John L. Hennessy and David A. Patterson, Computer Architecture – A Quantitative Approach, Elsevier, 2nd Edition, 2011.

  3. William Stallings, Computer Organization and Architecture: Designing for Performance, Technical Publications, 2010.

High-Level Computer Architecture and Systems Structure
  • Structural Perspectives

    • External Perspective (Desktop & Portable Systems)

    • Desktop Systems: Includes output devices (display monitors, speakers), input devices (keyboards, mice), and the system unit housing central hardware (processor, main memory, hard disk drive, DVD-ROM drive, graphics card, Ethernet interface).

    • Portable Systems: Integrates interfaces directly into compact forms featuring touchpads, touchscreens, wireless modules, specialized sensors, SD card slots, optimized battery capacities, weight profiles, and specific display dimensions.

    • Internal Hardware Perspective

    • Printed Circuit Boards: Centers on motherboards, laptop mainboards, and high-density mobile logic boards (e.g., iPhone 6 logic board).

    • Housed Components: Central processing unit socket, heat sink and cooling fan assemblies, expansion slots, random-access memory (RAM) slots, and integrated chipset controllers.

    • High Functional Level Structure

    • Central Processing Unit (CPU): Executes software instructions and controls operational timing.

    • Main Memory: Stores active program instructions and operational data.

    • Input/Output (I/O) Devices: Receives external inputs and generates processed output results.

    • System Bus: Interconnecting communication pathway transferring data, address, and control signals between CPU, Memory, and I/O.

  • Data Representation Principles

    • Signal Pulse Conversion: Hardware operates on discrete electronic signals where absence of pulse represents logical 00 and presence represents logical 11.

    • Binary Groupings

    • Bit: A single binary digit (00 or 11).

    • Nibble: A contiguous group of four binary bits (e.g., 11011101).

    • Byte: A contiguous group of eight binary bits (e.g., 1100101011001010).

    • Encoding Schemes: Standardized schemes such as ASCII assign unique numerical values to translate human-readable inputs into computer-compatible numeric formats.

Fundamental Number Systems
  • Primary Positional Number Systems

    • Decimal System: Base (radix) 1010; symbols 0,1,2,3,4,5,6,7,8,90, 1, 2, 3, 4, 5, 6, 7, 8, 9; positional powers of 1010; universally used in human calculation.

    • Binary System: Base (radix) 22; symbols 0,10, 1; positional powers of 22; native storage system for computers due to electronic components like flip-flops holding two stable states.

    • Octal System: Base (radix) 88; symbols 0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7; positional powers of 88; since 23=82^3 = 8, each octal digit maps directly to a 3-bit binary group; used to condense long binary strings.

    • Hexadecimal System: Base (radix) 1616; symbols 0,1,2,3,4,5,6,7,8,90, 1, 2, 3, 4, 5, 6, 7, 8, 9 and alphabetic letters A,B,C,D,E,FA, B, C, D, E, F (representing values 1010 through 1515); since 24=162^4 = 16, each hex digit maps directly to a 4-bit binary group; alphanumeric system for byte-organized data.

  • System Comparison Overview

    • Decimal: Base 1010, Symbols 0−90-9, Used by Humans: Yes, Used in Computers: No

    • Binary: Base 22, Symbols 0−10-1, Used by Humans: No, Used in Computers: Yes

    • Octal: Base 88, Symbols 0−70-7, Used by Humans: No, Used in Computers: No

    • Hexadecimal: Base 1616, Symbols 0−9,A−F0-9, A-F, Used by Humans: No, Used in Computers: No

Number System Base Conversions
  • Integer Conversions

    • Decimal to Other Bases

    • Decimal to Binary: Repeatedly divide by 22; collect remainders bottom-to-top (e.g., (36)<em>10=(100100)</em>2(36)<em>{10} = (100100)</em>2).

    • Decimal to Octal: Repeatedly divide by 88; collect remainders bottom-to-top (e.g., (359)<em>10=(547)</em>8(359)<em>{10} = (547)</em>8).

    • Decimal to Hexadecimal: Repeatedly divide by 1616; collect remainders bottom-to-top using letters A−FA-F for remainders 10−1510-15 (e.g., (5112)<em>10=(13F8)</em>16(5112)<em>{10} = (13F8)</em>{16}).

    • Binary to Other Bases

    • Binary to Decimal: Multiply each bit by positional weight 2n2^n and sum products (e.g., (11010)<em>2=(26)</em>10(11010)<em>2 = (26)</em>{10}).

    • Binary to Octal: Group bits in sets of 33 from right to left using 4-2-14\text{-}2\text{-}1 weighting (e.g., (010111)<em>2=(27)</em>8(010111)<em>2 = (27)</em>8).

    • Binary to Hexadecimal: Group bits in sets of 44 from right to left using 8-4-2-18\text{-}4\text{-}2\text{-}1 weighting (e.g., (11001011)<em>2=(CB)</em>16(11001011)<em>2 = (CB)</em>{16}).

    • Octal to Other Bases

    • Octal to Decimal: Multiply digits by weight 8n8^n and sum products (e.g., (456)<em>8=(302)</em>10(456)<em>8 = (302)</em>{10}).

    • Octal to Binary: Expand each octal digit into its 3-bit binary pattern (e.g., (231)<em>8=(010011001)</em>2(231)<em>8 = (010011001)</em>2).

    • Octal to Hexadecimal: Expand octal digits to 3-bit binary, combine into unified binary string, and regroup into 4-bit sets from right to left (e.g., (2327)<em>8=(4D7)</em>16(2327)<em>8 = (4D7)</em>{16}).

    • Hexadecimal to Other Bases

    • Hexadecimal to Decimal: Multiply digits by weight 16n16^n and sum products (e.g., (B14)<em>16=(2836)</em>10(B14)<em>{16} = (2836)</em>{10}).

    • Hexadecimal to Binary: Expand each hex digit into its 4-bit binary pattern (e.g., (5AF)<em>16=(010110101111)</em>2(5AF)<em>{16} = (010110101111)</em>2).

    • Hexadecimal to Octal: Expand hex digits to 4-bit binary, combine into unified binary string, and regroup into 3-bit sets from right to left (e.g., (2B6)<em>16=(1266)</em>8(2B6)<em>{16} = (1266)</em>8).

  • Fractional and Floating-Point Base Conversions

    • Decimal Fractional to Binary: Convert integer part via successive division by 22; convert fractional part via repeated multiplication by 22, recording integer results top-to-bottom (e.g., (10.625)<em>10=(1010.101)</em>2(10.625)<em>{10} = (1010.101)</em>2).

    • Binary Fractional to Decimal: Evaluate negative powers of 22 (2−1=0.52^{-1} = 0.5, 2−2=0.252^{-2} = 0.25, 2−3=0.1252^{-3} = 0.125, 2−4=0.06252^{-4} = 0.0625) according to power rule x−m=1xmx^{-m} = \frac{1}{x^m} and sum values (e.g., (1001.0101)<em>2=(9.3125)</em>10(1001.0101)<em>2 = (9.3125)</em>{10}).

    • Hexadecimal Fractional to Decimal: Multiply digits right of the radix point by negative powers of 1616 (16−1=116=0.062516^{-1} = \frac{1}{16} = 0.0625, 16−2=1256=0.0039062516^{-2} = \frac{1}{256} = 0.00390625) and sum values (e.g., (3A.2F)<em>16=(58.1835)</em>10(3A.2F)<em>{16} = (58.1835)</em>{10}).

Digital Logic Circuits and Logic Gates
  • Primary Logic Gates and Operational Rules

    • OR Gate: Output Z=X+YZ = X + Y (Z=X∣YZ = X \mid Y); produces high output (11) if one or more inputs are high (11).

    • AND Gate: Output Z=X⋅YZ = X \cdot Y (Z=X&YZ = X \& Y); produces high output (11) only if all inputs are high (11).

    • NOT Gate: Output Y=XˉY = \bar{X} (Y=∼XY = \sim X); inverts logical input state.

    • NAND Gate: Output Z=X⋅Y‾Z = \overline{X \cdot Y} (Z=∼(X&Y)Z = \sim(X \& Y)); produces false (00) output only when all inputs are true (11); complement of AND gate.

    • NOR Gate: Output Z=X+Y‾Z = \overline{X + Y} (Z=∼(X∣Y)Z = \sim(X \mid Y)); produces high (11) output only when all inputs are low (00); complement of OR gate.

    • XOR Gate: Output Z=X⊕YZ = X \oplus Y (Z=X ˆ YZ = X \text{ \^{} } Y); produces high (11) output when an odd number of inputs are true; low (00) when inputs are identical.

    • XNOR Gate: Output Z=X⊕Y‾Z = \overline{X \oplus Y}; produces high (11) output when all inputs are true or all inputs are false; complement of XOR gate.

  • Practical Advantages in Digital Design

    • Distinguishes reliably between logic state 00 and logic state 11.

    • Serves as the foundational element for constructing flip-flops (such as RS flip-flops).

    • Forms physical basis for TTL (Transistor-Transistor Logic) and CMOS (Complementary Metal-Oxide-Semiconductor) ICs.

    • Integrates with Karnaugh Maps (K-maps) to optimize logic circuits.

Boolean Algebra and Circuit Optimization
  • Foundational Concepts

    • Developed in 1854 by George Boole in An Investigation of the Laws of Thought.

    • Operates exclusively on binary truth values 00 and 11 (Switching Algebra).

    • Models binary decisions (YES / NO) and logical statement variables.

  • Postulates and Laws

    • OR Laws: A+0=AA + 0 = A, A+1=1A + 1 = 1, A+A=AA + A = A, A+Aˉ=1A + \bar{A} = 1

    • AND Laws: A⋅0=0A \cdot 0 = 0, A⋅1=AA \cdot 1 = A, A⋅A=AA \cdot A = A, A⋅Aˉ=0A \cdot \bar{A} = 0

    • NOT Laws: \bar{0} = 1, \bar{1} = 0, \overline{\bar{A}} = A

    • Commutative Laws: A+B=B+AA + B = B + A, A⋅B=B⋅AA \cdot B = B \cdot A

    • Associative Laws: A+(B+C)=(A+B)+CA + (B + C) = (A + B) + C, A⋅(B⋅C)=(A⋅B)⋅CA \cdot (B \cdot C) = (A \cdot B) \cdot C

    • Distributive Laws: A⋅(B+C)=(A⋅B)+(A⋅C)A \cdot (B + C) = (A \cdot B) + (A \cdot C), A+AˉB=A+BA + \bar{A}B = A + B, A+B⋅C=(A+B)⋅(A+C)A + B \cdot C = (A + B) \cdot (A + C)

    • Absorptive Laws: A+A⋅B=AA + A \cdot B = A, A⋅(A+B)=AA \cdot (A + B) = A, A⋅(Aˉ+B)=A⋅BA \cdot (\bar{A} + B) = A \cdot B

    • DeMorgan's Laws: A+B‾=Aˉ⋅Bˉ\overline{A + B} = \bar{A} \cdot \bar{B}, A⋅B‾=Aˉ+Bˉ\overline{A \cdot B} = \bar{A} + \bar{B}

  • Circuit Optimization Benefits & Limits

    • Benefits: Simplification reduces required gate counts, lowers manufacturing costs, enhances execution speed, and makes circuit design easier to comprehend and service.

    • Limitations: Strictly computes direct logic outcomes and cannot derive implied non-binary relationships.

Standard Academic References
  • M. Morris Mano, Computer System Architecture, Pearson Education, 3rd Edition, 2007.

  • Donald P. Leach and Albert Paul Malvino, Digital Principles and Applications, Tata McGraw-Hill, 5th Edition, 2003.

  • John L. Hennessy and David A. Patterson, Computer Architecture – A Quantitative Approach, Elsevier, 2nd Edition, 2011.

  • William Stallings, Computer Organization and Architecture: Designing for Performance, Technical Publications, 2010.