Hệ đếm
- Giá trị vị trí
- nhị phân 2k, bát phân 8k, thập lục phân 16k
- Sang thập phân
- Σ dk·bk
- Từ thập phân
- chia cho cơ số, đọc các số dư từ dưới lên
- Thập lục phân ↔ nhị phân
- một chữ số thập lục phân = 4 bit
- Số bù hai
- đảo các bit và cộng 1
Bảng công thức, các bước phương pháp chính cho từng chủ đề và 20 bài tập, kèm lời giải đầy đủ ở cuối.
Đặt các bit để lưu −55 theo bù hai 8 bit. Đọc như một số không dấu, giá trị U của mẫu là bao nhiêu?
Số nguyên không dấu lớn nhất N vừa trong 10 bit là bao nhiêu?
Bạn muốn chứng minh b → (c ∨ a) bằng phản đảo. Bạn chứng minh phép kéo theo nào thay thế? Hãy nhấp vào nó.
Có bao nhiêu hàng trong 16 hàng của bảng chân trị làm (¬(b → a) ∨ (¬a ∧ ¬d)) ∨ (b ∧ c) đúng? Gọi số này là N.
Hãy rút gọn F = A′B′ + ABC + A′B′C về dạng tổng các tích tối thiểu. Biểu thức rút gọn chứa bao nhiêu literal L?
Một thanh ghi dịch 4 bit Q₃Q₂Q₁Q₀ đang giữ 0101. Ở mỗi sườn xung nhịp các bit dịch sang phải một vị trí (Q₃ → Q₂ → Q₁ → Q₀, Q₀ bị mất) và đầu vào nối tiếp đi vào Q₃. Đầu vào nối tiếp là 1, 0, 0, 1, 0, 1 ở các sườn 6. Hãy cho trạng thái cuối Q = Q₃Q₂Q₁Q₀ dưới dạng số thập phân.
Giải 7x ≡ 15 (mod 17). Hãy cho nghiệm x với 0 < x < 17.
Hãy mã hóa thông điệp m = 1363 bằng khóa công khai RSA (n, e) = (1591, 11). Hãy tìm bản mã c.
Thuật toán sắp xếp nào là ổn định?
Chi phí khấu hao của việc tăng một bộ đếm nhị phân là bao nhiêu, biết rằng một lần tăng có thể lật nhiều bit?
Cây nhị phân hoàn hảo có chiều cao h, với chiều cao tính bằng cạnh, có bao nhiêu nút?
Tìm một khóa tùy ý trong đống min nhị phân n phần tử mất bao lâu?
Đồ thị liên thông có chu trình Euler, đường đi Euler không phải chu trình, hay không có cái nào? Hãy nhấp vào đáp án của bạn.
Hãy dùng thuật toán Dijkstra để tìm độ dài d(F) của đường đi ngắn nhất từ A đến F trong đồ thị có trọng số.
SQL injection là gì?
Bảng b chứa các giá trị 1, 2 và NULL trong cột y. SELECT * FROM a WHERE x NOT IN (SELECT y FROM b) trả về gì?
Tiền tố đơn nào tóm tắt cả 192.168.0.0/24 và 192.168.1.0/24?
Vì sao bên đóng kết nối TCP trước ở lại trạng thái TIME_WAIT trong hai lần thời gian sống tối đa của đoạn?
Một phòng ban cần 1808 địa chỉ máy chủ trong một mạng con. Độ dài tiền tố dài nhất p (mạng con nhỏ nhất) đủ lớn là bao nhiêu?
Một máy chủ có địa chỉ 10.20.253.211/30. Octet thứ tư x của địa chỉ mạng của nó là bao nhiêu?
Đáp số: U = 201
Đặt các bit: mỗi bit có giá trị bằng một lũy thừa của hai (128, 64, …, 1). Một chữ số hex đúng bằng bốn bit, và trong bù hai 8 bit, bit ngoài cùng bên trái có giá trị −128. Các phép toán theo bit làm việc trên từng vị trí bit riêng biệt.
Đáp số: N = 1023
Hệ đếm theo vị trí: mỗi chữ số có giá trị bằng giá trị của nó nhân với một lũy thừa của cơ số. Trong hệ nhị phân, các vị trí có giá trị 1, 2, 4, 8, 16, …; trong hệ thập lục phân 1, 16, 256, …, với A–F biểu diễn 10–15. Trong số bù hai 8 bit, bit ngoài cùng bên trái có giá trị −128 thay vì +128, đó là cách lưu số âm.
Đáp số: ¬(c ∨ a) → ¬b
Tương đương logic: hai công thức tương đương (≡) khi chúng có cùng giá trị ở mọi hàng của bảng chân trị. Hằng đúng bằng 1 ở mọi hàng, mâu thuẫn bằng 0 ở mọi hàng, còn công thức ngẫu nhiên thì không thuộc loại nào. Các luật hữu ích: De Morgan, ¬(a ∧ b) ≡ ¬a ∨ ¬b và ¬(a ∨ b) ≡ ¬a ∧ ¬b; a → b ≡ ¬a ∨ b ≡ ¬b → ¬a (phản đảo); ¬(a → b) ≡ a ∧ ¬b; và các luật phân phối, a ∨ (b ∧ c) ≡ (a ∨ b) ∧ (a ∨ c).
Phản đảo tương đương với phát biểu ban đầu, nên chứng minh nó là chứng minh phát biểu.
Đáp số: N = 8
Bảng chân trị: một công thức có n biến khác nhau có 2ⁿ hàng, mỗi hàng ứng với một tổ hợp giá trị chân trị (1 = đúng, 0 = sai). Hãy làm từ trong ra ngoài và cho mỗi công thức con một cột riêng. ¬a đảo giá trị; a ∧ b bằng 1 chỉ khi cả hai đều bằng 1; a ∨ b bằng 0 chỉ khi cả hai đều bằng 0; a → b bằng 0 chỉ khi a = 1 và b = 0; a ↔ b bằng 1 khi hai vế bằng nhau.
Đáp số: L = 5
Đại số Boole: các quy tắc rút gọn biểu thức là X + X′ = 1 và X·X′ = 0, X + X = X, hấp thụ X + X·Y = X, quy tắc kết hợp X·Y + X·Y′ = X, X + X′Y = X + Y và định lý đồng thuận XY + X′Z + YZ = XY + X′Z. Các luật De Morgan biến (X·Y)′ thành X′ + Y′ và (X + Y)′ thành X′·Y′. Một bìa Karnaugh áp dụng các quy tắc này bằng hình ảnh: mỗi nhóm hai ô kề nhau là một lần dùng XY + XY′ = X.
Đáp số: Q = 10
Flip-flop và bộ đếm: một flip-flop chỉ thay đổi ở sườn tích cực của xung nhịp. D sao chép đầu vào của nó (Q⁺ = D); T đảo khi T = 1; JK giữ nguyên với 00, đặt về 0 với 01, đặt lên 1 với 10 và đảo với 11. Một bộ đếm nhị phân n bit có 2ⁿ trạng thái và đếm theo modulo 2ⁿ; một bộ đếm mod-N đếm 0, 1, …, N − 1 rồi về lại 0, và cần số flip-flop n nhỏ nhất thỏa 2ⁿ ≥ N. Mỗi tầng của bộ đếm gợn sóng chia đôi tần số, nên đầu ra cuối của bộ đếm mod-N chạy ở fclk/N. Một bộ đếm Johnson gồm n flip-flop có 2n trạng thái, bộ đếm vòng có n.
Đáp số: x = 7
Nghịch đảo và đồng dư: a có nghịch đảo theo modulo n đúng khi gcd(a, n) = 1. Thuật toán Euclid mở rộng viết 1 = s·n + t·a, và khi đó a⁻¹ ≡ t (mod n). Một đồng dư a·x ≡ b (mod n) với gcd(a, n) = 1 có nghiệm x ≡ a⁻¹·b. Hai đồng dư x ≡ r₁ (mod m₁) và x ≡ r₂ (mod m₂) với các modulo nguyên tố cùng nhau có một nghiệm theo modulo m₁·m₂ (định lý số dư Trung Hoa). φ(n) của Euler đếm các số từ 1 đến n nguyên tố cùng nhau với n: φ(n) = n·∏(1 − 1/p).
Đáp số: c = 450
Lũy thừa modulo và RSA: tính aᵏ mod n bằng bình phương lặp: viết k ở dạng nhị phân, bình phương, rút gọn sau mỗi bước và nhân các lũy thừa có bit bằng 1. Fermat: aᵖ⁻¹ ≡ 1 (mod p) với số nguyên tố p không chia hết a, nên số mũ có thể được rút gọn theo modulo p − 1. RSA: chọn các số nguyên tố p và q, n = p·q và φ(n) = (p − 1)(q − 1); số mũ công khai e nguyên tố cùng nhau với φ(n), và số mũ bí mật là d = e⁻¹ mod φ(n). Mã hóa bằng c = mᵉ mod n và giải mã bằng m = cᵈ mod n.
Đáp số: B · Sắp xếp trộn
Sắp xếp trộn ổn định khi việc trộn lấy từ nửa trái trước nếu bằng nhau. Quicksort tại chỗ, sắp xếp vun đống và sắp xếp chọn thường không ổn định.
Đáp số: C · O(1) mỗi lần tăng
Qua n lần tăng, bit i lật khoảng n / 2ⁱ lần, nên tổng là dưới 2n lần lật, trung bình O(1) mỗi lần.
Đáp số: C · 2h+1 − 1
Cộng 1 + 2 + 4 + ... + 2h cho 2h+1 − 1; ví dụ, chiều cao 2 cho 7 nút.
Đáp số: A · O(n)
Đống không có quy tắc nào cho biết cây con nào chứa một khóa, nên trong trường hợp xấu nhất phải kiểm tra mọi nút; chỉ giá trị nhỏ nhất là tìm nhanh.
Đáp số: không phải cả hai
Euler, Hamilton và cây: một đồ thị liên thông có chu trình Euler (đi qua mỗi cạnh một lần, trở về điểm đầu) khi mọi đỉnh có bậc chẵn, và có đường đi Euler không phải chu trình khi có đúng hai đỉnh bậc lẻ; khi đó đường đi chạy từ một đỉnh lẻ đến đỉnh lẻ kia. Một chu trình Hamilton thăm mỗi đỉnh một lần; Kn có (n − 1)!/2 chu trình như vậy. Một cây trên n đỉnh có n − 1 cạnh, và một đồ thị liên thông có m cạnh còn lại một cây khung sau khi bỏ m − n + 1 cạnh.
Đáp số: d(F) = 31
Đường đi ngắn nhất và cây khung: thuật toán Dijkstra chốt một đỉnh mỗi vòng: đỉnh chưa chốt có khoảng cách tạm thời nhỏ nhất. Khoảng cách của nó khi đó là cuối cùng, và mỗi đỉnh kề v được d(v) = min(d(v), d(u) + w(u, v)). Thuật toán Kruskal xây dựng cây khung nhỏ nhất bằng cách lấy các cạnh từ nhẹ đến nặng và bỏ qua mọi cạnh tạo thành chu trình; thuật toán Prim mở rộng một cây từ một đỉnh xuất phát bằng cách luôn thêm cạnh nhẹ nhất đi ra khỏi cây. Một cây khung của n đỉnh có n − 1 cạnh.
Mỗi dòng: đỉnh được chốt, khoảng cách cuối cùng của nó, và các đỉnh kề có khoảng cách được cải thiện.
Đáp số: D · Một cuộc tấn công trong đó dữ liệu người dùng nhập làm thay đổi cấu trúc của truy vấn SQL
Khi dữ liệu người dùng nhập được nối vào SQL, kẻ tấn công có thể chèn lệnh. Câu lệnh chuẩn bị sẵn (prepared statement) với tham số giữ dữ liệu tách biệt khỏi mã.
Đáp số: C · Hoàn toàn không có hàng nào
Phép so sánh với NULL là UNKNOWN, nên toàn bộ điều kiện không bao giờ là TRUE; dùng NOT EXISTS hoặc lọc bỏ NULL sẽ tránh được cái bẫy này.
Đáp số: C · 192.168.0.0/23
0 và 1 có chung mọi bit của octet thứ ba trừ bit cuối, nên bớt một bit tiền tố (/23) bắt đầu từ 192.168.0.0 bao phủ chính xác cả hai.
Đáp số: C · Để các đoạn bị trễ tan biến và ACK cuối có thể được gửi lại nếu bị mất
TIME_WAIT bảo đảm ACK cuối bị mất có thể được lặp lại và các đoạn trùng lặp cũ hết hạn trước khi cùng một cặp địa chỉ và cổng được dùng lại.
Đáp số: p = 21
Chia mạng con IPv4: một địa chỉ có 32 bit. Tiền tố /p cho biết bao nhiêu bit đầu tiên xác định mạng; 32 − p bit còn lại đánh số các máy chủ. Một mạng con có 2³²⁻ᵖ địa chỉ, nhưng địa chỉ đầu (địa chỉ mạng) và địa chỉ cuối (địa chỉ quảng bá) không thể gán cho máy chủ, nên chứa được 2³²⁻ᵖ − 2 máy chủ. Ngoại lệ: /31 (liên kết điểm-điểm, RFC 3021) dùng cả 2 địa chỉ của nó cho host, còn /32 chỉ là một địa chỉ duy nhất (một host hoặc loopback).
Đáp số: x = 208
Chia mạng con IPv4: một địa chỉ có 32 bit. Tiền tố /p cho biết bao nhiêu bit đầu tiên xác định mạng; 32 − p bit còn lại đánh số các máy chủ. Một mạng con có 2³²⁻ᵖ địa chỉ, nhưng địa chỉ đầu (địa chỉ mạng) và địa chỉ cuối (địa chỉ quảng bá) không thể gán cho máy chủ, nên chứa được 2³²⁻ᵖ − 2 máy chủ. Ngoại lệ: /31 (liên kết điểm-điểm, RFC 3021) dùng cả 2 địa chỉ của nó cho host, còn /32 chỉ là một địa chỉ duy nhất (một host hoặc loopback).
ExamProblems · examproblems.com/courses/computer-science-fundamentals