Mục lục bài họcĐang ở d02-b2
Data Representation, Logic Gates and the Role of the Operating System
Why binary. Digital circuits distinguish two states reliably, so all data is encoded as bit patterns. The same pattern means different things depending on how it is interpreted, which is why questions always state the representation being used.
Unsigned and hexadecimal. In an 8-bit unsigned integer, the bit weights are 128, 64, 32, 16, 8, 4, 2 and 1, so the range is 0 to 255. Hexadecimal is used because each hex digit corresponds exactly to four bits, so a byte is always two hex digits; this makes long bit patterns readable without changing their meaning.
Two's complement. Signed integers use two's complement, in which the most significant bit carries a negative weight. In eight bits the weights become minus 128, then 64, 32, 16, 8, 4, 2, 1, giving the range minus 128 to plus 127 — note the asymmetry, and that there is only one representation of zero. To negate a number: invert every bit, then add one. The reason this representation is used is that ordinary binary addition then works for negative numbers with no special case, so the same adder circuit handles subtraction. Overflow occurs when the result will not fit: adding two positives and obtaining a negative, or adding two negatives and obtaining a positive.
Text, images and sound. Characters are encoded by ASCII, which uses seven or eight bits and cannot represent most of the world's writing systems, or by Unicode, which assigns a code point to every character in use and is usually stored in the variable-length UTF-8 encoding. An image is a grid of pixels; its size in bits is width times height times colour depth. Sound is captured by sampling: the size in bits is sample rate times bit depth times the number of channels times duration. Raising resolution, colour depth, sample rate or bit depth improves fidelity and increases file size proportionally, which is the trade-off every question in this area is testing.
The operating system. The operating system is the layer between hardware and applications. It manages resources — scheduling the processor between processes, allocating memory, controlling peripherals through device drivers, and organising secondary storage as a file system — and it provides a consistent interface so that an application does not need to know which particular hardware it is running on. That abstraction is what allows the same program to run on machines with different components.
Vì sao dùng nhị phân. Mạch số phân biệt được hai trạng thái một cách tin cậy, nên mọi dữ liệu đều được mã hoá thành các mẫu bit. Cùng một mẫu bit mang ý nghĩa khác nhau tuỳ theo cách diễn giải, đó là lý do đề thi luôn nói rõ đang dùng cách biểu diễn nào.
Số không dấu và hệ mười sáu. Trong một số nguyên không dấu 8 bit, trọng số các bit lần lượt là 128, 64, 32, 16, 8, 4, 2 và 1, nên khoảng biểu diễn là từ 0 tới 255. Hệ mười sáu được dùng vì mỗi chữ số của nó ứng đúng với bốn bit, nên một byte luôn là hai chữ số hệ mười sáu; điều này làm các mẫu bit dài trở nên dễ đọc mà không thay đổi ý nghĩa của chúng.
Bù hai. Số nguyên có dấu dùng biểu diễn bù hai, trong đó bit có trọng số lớn nhất mang trọng số âm. Với tám bit, các trọng số trở thành âm 128, rồi 64, 32, 16, 8, 4, 2, 1, cho khoảng từ âm 128 tới dương 127 — hãy chú ý tính bất đối xứng, và chú ý rằng chỉ có một cách biểu diễn duy nhất cho số không. Để lấy số đối: đảo mọi bit rồi cộng một. Lý do dùng cách biểu diễn này là phép cộng nhị phân thông thường khi đó vẫn đúng với số âm mà không cần trường hợp đặc biệt nào, nên cùng một mạch cộng xử lý được cả phép trừ. Tràn số xảy ra khi kết quả không nằm vừa trong số bit có sẵn: cộng hai số dương ra số âm, hoặc cộng hai số âm ra số dương.
Văn bản, hình ảnh và âm thanh. Ký tự được mã hoá bằng ASCII, vốn dùng bảy hoặc tám bit và không biểu diễn được phần lớn hệ chữ viết trên thế giới, hoặc bằng Unicode, gán một điểm mã cho mọi ký tự đang được dùng và thường được lưu theo bảng mã độ dài thay đổi UTF-8. Một ảnh là lưới điểm ảnh; kích thước tính bằng bit bằng chiều rộng nhân chiều cao nhân độ sâu màu. Âm thanh được ghi lại bằng cách lấy mẫu: kích thước tính bằng bit bằng tần số lấy mẫu nhân độ sâu bit nhân số kênh nhân thời lượng. Tăng độ phân giải, độ sâu màu, tần số lấy mẫu hay độ sâu bit đều làm tăng độ trung thực và làm tăng kích thước tệp theo tỷ lệ tương ứng — đó chính là sự đánh đổi mà mọi câu hỏi trong phần này đang kiểm tra.
Hệ điều hành. Hệ điều hành là lớp nằm giữa phần cứng và các ứng dụng. Nó quản lý tài nguyên — phân phối bộ xử lý giữa các tiến trình, cấp phát bộ nhớ, điều khiển thiết bị ngoại vi qua trình điều khiển, và tổ chức bộ nhớ ngoài thành hệ thống tệp — đồng thời cung cấp một giao diện nhất quán để ứng dụng không cần biết nó đang chạy trên phần cứng cụ thể nào. Chính lớp trừu tượng đó cho phép cùng một chương trình chạy được trên những máy có linh kiện khác nhau.
Dùng biểu diễn bù hai 8 bit. (a) Biểu diễn số âm 45. (b) Kiểm chứng kết quả bằng cách tính lại giá trị của mẫu bit thu được. (c) Đổi mẫu bit đó sang hệ mười sáu. (d) Tính 100 cộng 45 trong 8 bit và giải thích kết quả.
(a) Biểu diễn âm 45. Bước 1: viết 45 ở dạng nhị phân không dấu 8 bit. Vì 45 bằng 32 cộng 8 cộng 4 cộng 1, ta được 0010 1101. Bước 2: đảo mọi bit, được 1101 0010. Bước 3: cộng một, được 1101 0011.
(b) Kiểm chứng. Đây là bước bắt buộc và cũng là bước ăn điểm, vì nó chứng minh học sinh hiểu chứ không thuộc quy trình. Trong bù hai 8 bit, các trọng số là âm 128, 64, 32, 16, 8, 4, 2, 1. Mẫu bit 1101 0011 có bit bật ở các vị trí trọng số âm 128, 64, 16, 2 và 1. Cộng lại: âm 128 cộng 64 cộng 16 cộng 2 cộng 1 bằng âm 128 cộng 83 bằng âm 45. Đúng như yêu cầu.
(c) Sang hệ mười sáu. Tách thành hai nhóm bốn bit: 1101 và 0011. Nhóm đầu bằng 8 cộng 4 cộng 1 bằng 13, ứng với chữ số D. Nhóm sau bằng 2 cộng 1 bằng 3. Vậy kết quả là D3. Lưu ý rằng phép tách này luôn hợp lệ vì mỗi chữ số hệ mười sáu ứng đúng bốn bit, và nó không đòi hỏi biết mẫu bit đang biểu diễn số dương hay số âm.
(d) Tính 100 cộng 45. Số 100 là 0110 0100 và số 45 là 0010 1101. Cộng nhị phân được 1001 0001. Nếu diễn giải mẫu này theo bù hai: âm 128 cộng 16 cộng 1 bằng âm 111. Cộng hai số dương mà ra số âm — đây chính là dấu hiệu của tràn số. Nguyên nhân là kết quả đúng, 145, vượt quá giá trị lớn nhất biểu diễn được trong bù hai 8 bit là 127.
Quy tắc phát hiện tràn số phải nhớ. Trong bù hai, tràn số xảy ra khi và chỉ khi hai toán hạng CÙNG DẤU mà kết quả mang dấu ngược lại: dương cộng dương ra âm, hoặc âm cộng âm ra dương. Cộng hai số khác dấu không bao giờ tràn, vì kết quả luôn nằm giữa hai toán hạng. Chú ý rằng có bit nhớ đi ra khỏi bit cao nhất KHÔNG phải là dấu hiệu tràn trong bù hai — đó là dấu hiệu tràn với số không dấu, và nhầm hai điều này là lỗi phổ biến.
(a) Một ảnh 1 920 nhân 1 080 điểm ảnh, độ sâu màu 24 bit, không nén. Tính kích thước theo MB. (b) Một đoạn âm thanh stereo dài 3 phút, tần số lấy mẫu 44 100 Hz, độ sâu 16 bit. Tính kích thước theo MB. (c) Giải thích vì sao nén có mất mát lại chấp nhận được với hai loại dữ liệu này nhưng không chấp nhận được với tệp văn bản chương trình.
Quy ước 1 MB bằng 1 000 000 byte.
(a) Ảnh. Số điểm ảnh bằng 1 920 nhân 1 080 bằng 2 073 600. Mỗi điểm ảnh cần 24 bit, tức 3 byte. Kích thước bằng 2 073 600 nhân 3 bằng 6 220 800 byte, tức khoảng 6,22 MB. Ý nghĩa của độ sâu 24 bit: 8 bit cho mỗi kênh đỏ, xanh lá và xanh dương, cho 2 mũ 24 bằng khoảng 16,7 triệu màu.
(b) Âm thanh. Mỗi giây có 44 100 mẫu cho mỗi kênh; với hai kênh là 88 200 mẫu. Mỗi mẫu 16 bit tức 2 byte, nên mỗi giây cần 88 200 nhân 2 bằng 176 400 byte. Với 3 phút bằng 180 giây: 176 400 nhân 180 bằng 31 752 000 byte, tức khoảng 31,75 MB.
Nhận xét đáng nêu về hai con số. Cả hai đều lớn hơn nhiều so với kích thước tệp mà người dùng thường gặp, và chênh lệch đó chính là phần do nén tạo ra. Đây là lý do nén không phải một tính năng phụ mà là điều kiện để lưu trữ và truyền dữ liệu đa phương tiện trở nên khả thi.
(c) Vì sao nén có mất mát chấp nhận được với ảnh và âm thanh. Người tiếp nhận cuối cùng của hai loại dữ liệu này là giác quan con người, vốn có giới hạn. Tai không nghe được những âm bị che lấp bởi một âm mạnh hơn cùng thời điểm, và không nghe được các tần số ngoài dải nghe; mắt nhạy với thay đổi độ sáng hơn nhiều so với thay đổi màu sắc. Nén có mất mát khai thác đúng các giới hạn đó: nó loại bỏ những thông tin mà người dùng không nhận ra là đã mất, nên tỷ lệ nén đạt được cao hơn nhiều lần so với nén không mất mát.
Vì sao không chấp nhận được với mã nguồn hay tệp thực thi. Ở đây người tiếp nhận là một trình biên dịch hoặc bộ xử lý, và nó đòi hỏi từng bit phải chính xác. Một bit sai trong mã nguồn làm chương trình không dịch được hoặc chạy sai; một bit sai trong tệp thực thi có thể làm hỏng cả chương trình. Không tồn tại khái niệm "gần đúng" ở đây, nên phải dùng nén KHÔNG mất mát, vốn hoạt động bằng cách loại bỏ phần dư thừa có thể tái tạo lại chính xác — chẳng hạn thay các chuỗi lặp bằng một tham chiếu tới lần xuất hiện trước.
Câu tổng quát để trả lời mọi câu hỏi về nén. Chọn loại nén theo người tiếp nhận cuối cùng: nếu đó là giác quan con người thì nén có mất mát là hợp lý; nếu đó là một máy đòi hỏi độ chính xác từng bit thì bắt buộc dùng nén không mất mát.
Bẫy 2 — lẫn XOR với OR. Hai cổng chỉ khác nhau ở đúng một ô: khi cả hai đầu vào bằng 1, XOR cho 0 còn OR cho 1. Nhớ theo câu "XOR cho 1 khi hai đầu vào KHÁC NHAU".
Bẫy 3 — quên nhân số kênh khi tính kích thước tệp âm thanh, hoặc quên chia 8 khi đổi bit sang byte. Hãy viết đầy đủ công thức tần số lấy mẫu nhân độ sâu bit nhân số kênh nhân thời lượng rồi chia 8, và luôn ghi rõ đơn vị ở mỗi bước.
Đọc xong rồi — làm thử ngay
Bài tập của chương Computer Organization gồm 14 câu trắc nghiệm và 5 đề tự luận. Đáp án hiện ngay khi chọn, miễn phí.