← Máy tính hoạt động thế nào?

Bài 2 · Vận dụng · 20 phút· Cập nhật 11/06/2026

Cổng logic & Bộ cộng

Biên soạn bởi Nguyễn Anh Tuấn

Cổng logic (logic gate) AND/OR/XOR/NOT, bộ bán cộng & bộ cộng đầy đủ (half/full-adder) ghép thành bộ cộng 8-bit - cách CPU thực sự tính toán.

Mọi thứ trong CPU rút gọn về bit: chỉ 0 hoặc 1 (điện áp thấp/cao). Một cổng logic nhận một hoặc hai bit và cho ra một bit theo một quy tắc cố định. Đây là viên gạch nhỏ nhất. Bấm thử:

AND1 khi CẢ HAI là 1OR1 khi CÓ ÍT NHẤT một 1XOR1 khi HAI bit KHÁC nhauNOTđảo: 0↔1
Bốn cổng logic cơ bản và luật cho ra 1. Ghép vô số cổng này lại thành cả CPU.
1

Bấm vào A / B để bật–tắt và xem cổng XOR đổi kết quả.

ABXOR
000
011
101
110
  • AND: ra 1 chỉ khi cả hai vào đều 1.
  • OR: ra 1 khi có ít nhất một vào là 1.
  • XOR: ra 1 khi hai vào KHÁC nhau.
  • NOT: đảo bit (0↔1).

Thử cộng hai bit: 0+0=0, 0+1=1, 1+0=1, còn 1+1 = “10” - viết 0, nhớ 1. Vậy ta cần hai đầu ra: bit Tổng (Sum) và bit Nhớ (Carry).

Phát hiện đẹp

Sum = A XOR B (1 khi hai bit khác nhau) và Carry = A AND B (1 chỉ khi cả hai cùng 1). Hai cổng là đủ để cộng một bit!

Bộ bán cộng quên mất một thứ: khi cộng nhiều bit, mỗi cột còn nhận bit nhớ từ cột trước (carry-in). Bộ cộng đầy đủ (full-adder) cộng ba bit: A, B và nhớ-vào - chỉ cần ghép hai bộ bán cộng cộng với một cổng OR.

  • Full-adder = 2 half-adder + 1 cổng OR.
  • Nó cho ra Tổng và Nhớ-ra (carry-out) cho cột kế tiếp.

Xếp 8 bộ cộng đầy đủ cạnh nhau, nối Nhớ-ra của cột này vào Nhớ-vào của cột bên trái. Bit nhớ “gợn” từ phải sang trái - gọi là ripple-carry. Kéo thử hai số:

nhớ00000100
A01011010
B00100011
tổng01111101
90 + 35 = 125 carry-out = 0 · vừa 8 bit

Tràn số 8-bit

Nếu tổng vượt 255, bit nhớ cuối cùng tràn ra ngoài 8 bit (carry-out = 1) - đúng lúc mô hình CPU báo TRÀN SỐ.

CPU không cần mạch trừ riêng. Mẹo số bù hai: đảo tất cả các bit rồi cộng 1 để được số âm. Khi đó A − B = A + (−B) - phép trừ dùng lại đúng bộ cộng ở Bước 4.

  • −n trong 8 bit = (đảo bit của n) + 1.
  • Ví dụ −5 = 1111 1011; rồi 9 + (−5) = 4.
  • Nhờ vậy CPU chỉ cần MỘT bộ cộng cho cả cộng lẫn trừ.

Xếp chồng các tầng trừu tượng: transistorcổng logicbộ cộngALU → lệnh ADD mà bạn gõ trong mô hình CPU. Không có phép màu nào - chỉ là các công tắc bật/tắt, ghép lại đủ khéo.

Trung thực

Mô hình này đơn giản hoá để hiểu nguyên lý. CPU thật thêm nhiều mẹo tăng tốc (carry-lookahead, pipeline…), nhưng nền tảng - cộng bằng cổng logic - thì vẫn đúng như vậy.

Câu hỏi thường gặp

Từ các transistor - những “công tắc” điện tử tí hon bật/tắt dòng điện. Vài transistor ghép lại thành một cổng AND, OR hay XOR. Cả con chip có hàng tỉ transistor.

0+0=0, 0+1=1, 1+0=1, 1+1=10 (nhớ 1, viết 0). Cột “viết” chính là 1 khi hai bit khác nhau - đúng định nghĩa XOR. Còn cột “nhớ” là 1 chỉ khi cả hai cùng 1 - đúng định nghĩa AND.

Không. Bit nhớ phải “gợn” lần lượt từ phải sang trái nên hơi chậm. CPU thật dùng các bộ cộng nhanh hơn (carry-lookahead), nhưng kết quả tính ra thì y hệt - ripple-carry dễ hiểu nhất nên ta học nó trước.

Vì với số bù hai, phép trừ trở thành phép cộng - CPU chỉ cần MỘT bộ cộng cho cả cộng lẫn trừ. “Bit dấu” đơn giản lại cần mạch riêng và có hai cách biểu diễn số 0.

Đúng. Nhân có thể làm bằng cộng-dịch (shift-and-add) lặp lại - về bản chất là nhiều bộ cộng. Trong silicon còn có khối nhân chuyên dụng ghép từ rất nhiều bộ cộng.

Bài Phép toán trên bit (bitwise) - dịch bit là gì →

Trực tiếp: khối ALU trong mô hình CPU chính là một bộ cộng 8-bit như ở Bước 4. Cờ CARRY và trạng thái “Tràn số” khi cộng quá 255 chính là bit nhớ cuối cùng tràn ra khỏi 8 bit.

Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.

Tick những điều em tự tin làm được sau khi học bài này. 0/6

Trả lời vài câu để chắc rằng em đã nắm bài.

Câu 1/3 Điểm: 0

Trong bộ bán cộng (half-adder), bit Tổng (Sum) và bit Nhớ (Carry) được tính bằng cổng nào?

  1. 1

    Điền bảng chân trị

    Với hai bit A, B, điền kết quả AND, OR, XOR cho cả 4 tổ hợp 00, 01, 10, 11.

    Hoàn thành khi: AND = 0,0,0,1 · OR = 0,1,1,1 · XOR = 0,1,1,0.

  2. 2

    Bộ bán cộng

    Viết công thức Sum và Carry của bộ bán cộng theo cổng logic, rồi tính cho a=1, b=1.

    Hoàn thành khi: Sum = a XOR b, Carry = a AND b; với 1,1 → Sum = 0, Carry = 1 (tức 1+1 = “10”).

  3. 3

    Cộng nhị phân 8-bit

    Tính 0101 1010 + 0010 0011 (90 + 35). Cho kết quả nhị phân, thập phân và cho biết có tràn không.

    Hoàn thành khi: Ra 125 = 0111 1101, KHÔNG tràn (carry-out = 0). Kiểm tra bằng công cụ cộng 8-bit ở Bước 4.

  4. 4

    Khi nào thì tràn số?

    Tính 1100 1000 + 0101 0000 (200 + 80) trong 8 bit. Điều gì xảy ra, 8 bit còn giữ lại số nào?

    Hoàn thành khi: 200 + 80 = 280 > 255 → bit nhớ tràn ra (carry-out = 1); 8 bit giữ 280 − 256 = 24 = 0001 1000.

  5. 5

    Số bù hai

    Biểu diễn −5 trong 8 bit bằng số bù hai, rồi dùng nó tính 9 + (−5) và kiểm tra = 4.

    Hoàn thành khi: −5 = 1111 1011; 0000 1001 + 1111 1011 = 1 0000 0100, bỏ bit thứ 9 → 0000 0100 = 4 ✓.

  6. 6

    Nối sang Bài 6 (mô hình CPU)

    Mở Bài 6. Khối nào trong CPU chính là bộ cộng 8-bit? Cờ nào sáng khi kết quả vượt 255?

    Hoàn thành khi: Khối ALU; cờ CARRY (kèm trạng thái “Tràn số”).