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ử:
Bấm vào A / B để bật–tắt và xem cổng XOR đổi kết quả.
| A | B | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
- ▸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
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ớ | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
| A | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| B | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 |
| tổng | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
Tràn số 8-bit
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: transistor → cổng logic → bộ cộng → ALU → 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
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ì →Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
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
Đ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
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
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
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
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
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ố”).