| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| Thể hiện sự hiểu biết về các đại lượng nhị phân và sự khác biệt giữa tiền tố nhị phân và tiền tố thập phân | Hiểu sự khác biệt và sử dụng: • kibi và kilo • mebi và mega • gibi và giga • tebi và tera |
| Thể hiện sự hiểu biết về các hệ đếm khác nhau | Sử dụng cơ số nhị phân, thập phân, thập lục phân và Thập phân Mã hóa Nhị phân (BCD) cũng như biểu diễn bù 1 và bù 2 cho số nhị phân |
| Chuyển đổi giá trị nguyên từ một cơ số/biểu diễn này sang cơ số/biểu diễn khác | |
| Thực hiện phép cộng và trừ nhị phân | Sử dụng các số nguyên nhị phân dương và âm |
| Thể hiện sự hiểu biết về cách tràn (overflow) có thể xảy ra | |
| Mô tả các ứng dụng thực tế nơi Thập phân Mã hóa Nhị phân (BCD) và Thập lục phân được sử dụng | |
| Thể hiện sự hiểu biết và có thể biểu diễn dữ liệu ký tự ở dạng nhị phân nội bộ, tùy thuộc vào bộ mã ký tự đang dùng | Học sinh cần quen thuộc với ASCII (Mã tiêu chuẩn Mỹ cho Trao đổi Thông tin), ASCII mở rộng và Unicode. Học sinh không yêu cầu ghi nhớ bất kỳ mã ký tự cụ thể nào |
Biểu diễn thông tin
Khoa học máy tính A-Level · Chủ đề 1
22:30
Hệ đếm & Dữ liệu
Bức ảnh này. Bài hát này. Chính video này. Tên của bạn, tin nhắn của bạn, mọi tập tin trên mọi thiết bị — bên trong máy tính, tất cả đều chỉ là những số không và một.…
Giọng đọc tiếng Anh · phụ đề tiếng Anh + 中文 được ghi trực tiếp
1.1
Hệ đếm
Chương trình
Nguồn: Chương trình Cambridge International
Ba hệ đếm bạn cần biết:
- denary (thập phân, cơ số 10) — sử dụng chữ số 0–9. Giá trị vị trí là lũy thừa của mười.
- binary (cơ số 2) — sử dụng 0 và 1. Giá trị vị trí là lũy thừa của hai. Mỗi byte gồm 8 bit.
- hexadecimal (cơ số 16) — sử dụng 0–9 rồi A–F cho 10–15. Mỗi chữ số hex biểu diễn đúng 4 bit.

Chuyển đổi
Denary → binary: tiếp tục chia cho 2 và ghi lại phần dư, đọc từ dưới lên trên. Hoặc trừ đi giá trị vị trí lớn nhất (lũy thừa của 2) vừa khít.
Ví dụ: $558_{10}$: $558 = 512 + 32 + 8 + 4 + 2 = 2^{9} + 2^{5} + 2^{3} + 2^{2} + 2^{1}$. Trong 12 bit: 0010 0010 1110.
Binary → hex: nhóm các bit thành nibbles (4 bit) từ phải sang trái và chuyển đổi từng nhóm. 0010 0010 1110 → 2 2 E → 22E.
Hex → binary: thay thế mỗi chữ số hex bằng chuỗi 4-bit của nó. Hex → denary: nhân mỗi chữ số với giá trị vị trí của nó. 22E $= 2 \times 256 + 2 \times 16 + 14 = 558$.
Ví dụ có lời giải. Chuyển đổi số thập phân 200 sang nhị phân 8-bit, sau đó sang thập lục phân.
$200 = 128 + 64 + 8$, nên nhị phân là 11001000. Theo nhóm nibble, 1100 1000 $= 12$ và $8$, tức là $\text{C}$ và $8$, vậy thập lục phân là C8.

Bao nhiêu bit?
Câu hỏi thi cố định chiều rộng đăng ký (8, 12 hoặc 16 bit). Đổ thêm zeros ở đầu để đạt độ rộng đó: $558$ trong 12 bit là 0010 0010 1110, không bao giờ là 10 0010 1110.
Để tìm số bit tối thiểu có thể lưu trữ một giá trị, hãy hỏi xem mình cần những giá trị vị trí nào:
- số nguyên không dấu từ $0$ đến $2^{n} - 1$ cần $n$ bit: $200$ cần 8 bit (giá trị cao nhất là $255$), $1000$ cần 10 bit (giá trị cao nhất là $1023$), $16$ cần 5 bit (4 bit dừng lại ở $15$).
- Một số nguyên bù hai có dấu từ $-2^{n-1}$ đến $2^{n-1} - 1$ cần $n$ bit: $-200$ cần 9 bit, vì 8 bit chỉ dừng lại ở $-128$.
- một chữ số hexadecimal cần 4 bit, một chữ số BCD cần 4 bit, và một ký tự ASCII cần 7 bit (8 bit cho extended ASCII).
Tiền tố nhị phân so với thập phân
Hai họ tiền tố trông giống nhau nhưng khác biệt — thập phân (lũy thừa của 10) và nhị phân (lũy thừa của 2):
| Thập phân (SI) | Nhị phân (b bộ nhớ) |
|---|---|
| kilo $= 10^{3}$ | kibi (Ki) $= 2^{10} = 1024$ |
| mega $= 10^{6}$ | mebi (Mi) $= 2^{20}$ |
| giga $= 10^{9}$ | gibi (Gi) $= 2^{30}$ |
| tera $= 10^{12}$ | tebi (Ti) $= 2^{40}$ |
Vì vậy, tebibyte (TiB) lớn hơn một chút so với terabyte (TB). Một ổ "1 TB" chứa $10^{12}$ byte, nhưng hệ điều hành báo cáo theo TiB sẽ hiển thị con số nhỏ hơn.
Nhị phân, thập phân và thập lục phân
Nhập một con số và xem nó dưới dạng nhị phân, thập phân và thập lục phân cùng lúc — cũng như cách các giá trị vị trí cộng dồn.
| English | Tiếng Việt |
|---|---|
| number system/ˈnʌmbə ˈsɪstəm/ | hệ đếm |
| binary/ˈbaɪnəri/ | Nhị phân |
| denary/ˈdiːnəri/ | Thập phân |
| digit/ˈdɪdʒɪt/ | chữ số |
| place value/pleɪs ˈvæljuː/ | vị trí giá trị |
| byte/baɪt/ | Byte |
| bit/bɪt/ | Bit |
| hexadecimal/ˌheksəˈdesɪml/ | Thập lục phân |
| nibble/ˈnɪbl/ | Nibble (nửa byte) |
| register width/ˈredʒɪstə wɪtθ/ | Độ rộng thanh ghi |
| register/ˈredʒɪstə/ | Thanh ghi |
| BCD/ˌbiː siː ˈdiː/ | mã BCD |
1.1
Toán học nhị phân
Phép cộng nhị phân
Cộng từng cột từ phải sang trái, mang số giống như thập phân:
| Bit A | Bit B | Carry in | Sum bit | Carry out |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
Overflow xảy ra khi kết quả cần nhiều bit hơn thanh ghi có thể chứa — carry-out của cột ngoài cùng bên trái chính là bit overflow.
Ví dụ có lời giải. Cộng các số nguyên không dấu 8-bit $10110101$ và $01101100$, và bình luận về kết quả.
$10110101 + 01101100 = 1\,00100001$. Đáp án cần 9 bit, nên không chứa được trong một thanh ghi 8 bit: đã xảy ra tràn số. Một câu trả lời đầy đủ phải nêu tên lỗi và giải thích lý do, sử dụng kích thước bit mà đề bài đã cho: "Tràn số: kết quả thực tế ($289$) lớn hơn giá trị tối đa mà một thanh ghi 8 bit có thể lưu trữ ($255$), nên phần carry của bit quan trọng nhất bị mất và kết quả được lưu ($00100001 = 33$) là sai."
Phép trừ nhị phân
Cách thông thường là phép cộng bù hai: để thực hiện $A - B$, tạo bù hai của $B$ (đảo ngược từng bit rồi cộng 1), sau đó cộng lại và bỏ qua phần carry cuối cùng.
Để trừ $00011110$ từ $01100100$ (không dấu 8 bit):
- Bù hai của $00011110$: đảo → $11100001$, cộng 1 → $11100010$.
- Cộng vào $01100100$: kết quả $1\,01000110$ (9 bit) — bỏ đi bit 1 ở đầu → $01000110 = 70_{10}$. Kiểm tra: $100 - 30 = 70$. ✓
Số nguyên có dấu bù hai
Trong một số bù hai $n$-bit:
- Bit quan trọng nhất (MSB) là bit dấu: 0 = dương, 1 = âm.
- Để đọc một số âm: đảo ngược từng bit, cộng 1, sau đó đổi dấu.
Vậy $11100010$ là số âm; đảo → $00011101$, cộng 1 → $00011110 = 30$, nên nó là $-30$. Đây là số nguyên có dấu (khác với không dấu). Phạm vi cho $n$ bit là $-2^{n-1}$ đến $+2^{n-1} - 1$; với 8 bit, là $-128$ ($10000000$) đến $+127$ ($01111111$).
Cùng một dãy bit có nghĩa khác nhau tùy thuộc vào quy ước đọc. Là số không dấu, mỗi bit đều là vị trí giá trị, nên 8 bit chạy từ $0$ đến $255$; là số nguyên có dấu bù hai, bit trên cùng là dấu, nên cùng 8 bit đó chạy từ $-128$ đến $+127$. Dãy $11111111$ được đọc là $255$ theo cách này và $-1$ theo cách kia — bản thân các bit không cung cấp thông tin nào về điều đó.
Cùng một byte được đọc là không dấu và có dấu: chỉ có quy ước giải mã mới phân biệt được chúng
Bù hai 8-bit: bit dấu chia phạm vi thành số âm ($-128$ đến $-1$) và số dương ($0$ đến $127$)
Ví dụ tính toán. Giá trị thập phân nào mà số bù hai 8-bit $10110100$ biểu diễn?
MSB là 1, nên nó là số âm. Đảo → $01001011$, cộng 1 → $01001100 = 76$, nên giá trị là $-76$. Kiểm tra bằng vị trí giá trị: $-128 + 32 + 16 + 4 = -76$.
Ví dụ đã giải. Viết $-108$ dưới dạng số nguyên bù hai 12 bit.
Bắt đầu từ $+108$ trong 12 bit: $108 = 64 + 32 + 8 + 4$, tức là 0000 0110 1100. Đảo ngược mọi bit: 1111 1001 0011. Cộng 1: 1111 1001 0100. Kiểm tra bằng cách dùng giá trị vị trí, trong đó bit cao nhất có giá trị $-2^{11} = -2048$: $-2048 + 1024 + 512 + 256 + 128 + 16 + 4 = -108$. ✓
Đối với 12 bit, phạm vi là $-2048$ (1000 0000 0000) đến $+2047$ (0111 1111 1111). Các câu hỏi yêu cầu giá trị nhỏ nhất và lớn nhất muốn hai mẫu này, vì vậy hãy học quy tắc: số âm nhất là một 1 theo sau bởi zeros; số dương nhất là một 0 theo sau bởi ones.
Một phép dịch toán học di chuyển mọi bit sang trái hoặc phải nhưng giữ nguyên dấu: dịch phải một vị trí làm giảm một nửa giá trị và sao chép bit dấu vào khoảng trống bên trái, do đó số âm vẫn giữ nguyên âm (1111 1001 0100 dịch phải ba vị trí là 1111 1111 0010, tương đương với $-14$: $-108 / 8 = -13.5$, và việc dịch phải làm tròn xuống). Dịch trái nhân đôi giá trị. Các phép dịch thuộc về bộ lệnh assembly trong chủ đề 4, nhưng câu hỏi này được đặt ra cùng với phần xử lý số ở đây.
Tràn số trong phép toán số học có dấu xảy ra khi kết quả thực tế nằm ngoài phạm vi này — nhận biết được khi bit dấu thay đổi sai (hai số dương cho ra số âm, hoặc hai số âm cho ra số dương).
Bù một
Trước khi có bù hai, một phương pháp cũ gọi là bù một biểu diễn số âm bằng cách đơn giản là đảo ngược từng bit của số dương — không có bước "cộng 1".
- $+30 = 00011110$, nên trong bù một là $-30 = 11100001$ (chỉ đơn thuần đảo ngược).
- Nhược điểm: nó có hai số không — $00000000$ ($+0$) và $11111111$ ($-0$) — làm lãng phí một mẫu mã bit và khiến phép tính toán trở nên cồng kềnh.
Bù hai (đảo và cộng 1) loại bỏ số 0 âm: nó có một số 0 duy nhất và cho phép phép cộng và trừ sử dụng chung mạch điện. Đó là lý do tại sao máy tính hiện đại lưu trữ số nguyên có dấu dưới dạng bù hai, chứ không phải bù một.
Nhị phân & số nguyên có dấu
byte = tổng các giá trị vị trí
Xem cách một mẫu hình 8 bit ánh xạ sang một số (và nó sẽ tràn vượt quá 255 như thế nào).
Các bit có dấu bù hai
Bit bên trái mang giá trị vị trí âm. Đảo ngược bất kỳ bit nào — hoặc nhấn Negate (đảo ngược mọi bit, sau đó cộng 1) — và quan sát sự thay đổi của giá trị có dấu.
| English | Tiếng Việt |
|---|---|
| unsigned/ʌnˈsaɪnd/ | không dấu |
| overflow/ˌəʊvəˈfləʊ/ | Vượt quá |
| most significant bit/məʊst sɪɡˈnɪfɪkənt bɪt/ | Bit quan trọng nhất |
| two's complement/tuːz ˈkɒmplɪmənt/ | Bù hai |
| signed integer/saɪnd ˈɪntɪdʒə/ | số nguyên có dấu |
| sign bit/saɪn bɪt/ | Bit dấu |
| arithmetic shift/ˌærɪθˈmetɪk ʃɪft/ | dịch chuyển số học |
| one's complement/wʌnz ˈkɒmplɪmənt/ | bù mã |
| 7-segment display/ˈsevən ˈseɡmənt dɪˈspleɪ/ | màn hình hiển thị 7-đoạn |
| memory address/ˈmeməri əˈdres/ | địa chỉ bộ nhớ |
1.1
Thập phân mã hóa nhị phân (BCD)
Trong BCD, mỗi chữ số thập phân được viết dưới dạng mẫu 4-bit riêng của nó. Số $93$ là 1001 0011 trong BCD — không phải số nhị phân 93 ($01011101$). Mỗi nibble chỉ sử dụng 0–9; các mẫu $1010$–$1111$ là không hợp lệ.
Đọc BCD: 0010 0111 0101 → 2, 7, 5 → 275.
Ứng dụng: máy tính bỏ túi, đồng hồ kỹ thuật số và các thiết bị hiển thị chữ số thập phân — mỗi chữ số điều khiển một màn hình 7 đoạn. Mã tiền tệ thường dùng BCD để tránh các lỗi làm tròn khi chuyển đổi phân số như 0.1 sang nhị phân.
Một câu trả lời "justify" (giải thích) phải liên kết ứng dụng với một đặc tính của BCD: mỗi chữ số thập phân có riêng 4 bit, nên một chữ số có thể gửi trực tiếp đến màn hình hiển thị của nó, hoặc được cộng từng chữ số một, mà không cần chuyển đổi toàn bộ số; và một phân số thập phân như $0.10$ được lưu trữ chính xác, điều mà phân số nhị phân không thể làm được.

1.1
Hexadecimal — ứng dụng thực tiễn
Hex là cách viết gọn nhị phân (1 chữ số hex = 4 bit):

- địa chỉ bộ nhớ trong lập trình mức thấp —
0x7FFE. - giá trị màu trong HTML/CSS —
#FF8800. - địa chỉ MAC —
AC:DE:48:00:11:22.
Hexadecimal không thay đổi dữ liệu được lưu trữ — nó chỉ giúp con người dễ đọc dữ liệu nhị phân hơn.
1.1
Mã ký tự
Máy tính lưu văn bản dưới dạng số; mỗi ký tự có một mã điểm (code point) số học do một bộ mã ký tự quy định.
ASCII
- ASCII sử dụng 7 bit — 128 mã điểm. Bao gồm chữ cái Latin cơ bản, chữ số, dấu câu và mã điều khiển.
- Extended ASCII sử dụng 8 bit — 256 mã điểm; 128 mã đầu tiên giống với ASCII, 128 mã sau khác nhau tùy khu vực.

Unicode
- Unicode là bộ mã ký tự toàn cầu bao phủ hầu hết mọi hệ chữ viết, cùng các biểu tượng và emoji.
- các phiên mã phổ biến: UTF-8 (1–4 byte, tương thích ASCII), UTF-16 (2 hoặc 4 byte), UTF-32 (cố định 4 byte).
Tại sao Unicode vượt trội hơn ASCII
- nó đại diện cho nhiều ký tự hơn hẳn (mọi hệ chữ viết, emoji); ASCII chỉ bao phủ tiếng Anh cơ bản.
- tệp tin di động mà không lo nhầm lẫn trang mã, và cho phép đa ngôn ngữ trong một tài liệu.
- sự đánh đổi: tệp Unicode thường lớn hơn đối với văn bản chỉ bằng tiếng Anh.
Khi đề bài yêu cầu nêu sự khác biệt, hãy trả lời theo cặp kèm số liệu: ASCII dùng 7 bit (Extended ASCII 8 bit), nên có 128 (256) ký tự; Unicode dùng tối đa 32 bit (UTF-8 dùng từ 1 đến 4 byte), nên có hơn một triệu mã điểm. ASCII chỉ bao phủ tiếng Anh cơ bản; Unicode bao phủ mọi hệ chữ viết, và 128 mã điểm đầu của Unicode chính là ASCII. Trong UTF-8, một chữ cái tiếng Anh vẫn chiếm 1 byte, nên tên tệp 40 chữ cái tiếng Anh dài 40 byte cả trên ASCII lẫn UTF-8, trong khi một ký tự tiếng Trung chiếm 3 byte.
Một ký tự được lưu trữ dưới dạng một số
Mỗi ký tự có một mã số — 'A' là 65. Đảo ngược các bit để xem mã này trong nhị phân và thập lục phân, đúng như máy tính lưu giữ nó.
| English | Tiếng Việt |
|---|---|
| code point/kəʊd pɔɪnt/ | điểm mã |
| character set/ˈkærɪktə set/ | bộ ký tự |
| encoding/enˈkəʊdɪŋ/ | mã hóa |
1.2
Hình ảnh bitmap
Chương trình
| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| Thể hiện sự hiểu biết về cách dữ liệu của hình ảnh điểm ảnh được mã hóa | Sử dụng và hiểu các thuật ngữ: pixel, header tệp, độ phân giải hình ảnh, độ phân giải màn hình, độ sâu màu / độ sâu bit |
| Thực hiện tính toán để ước tính dung lượng tệp cho hình ảnh bitmap | |
| Thể hiện sự hiểu biết về tác động của việc thay đổi các yếu tố của hình ảnh bitmap lên chất lượng hình ảnh và dung lượng tệp | Sử dụng các thuật ngữ: độ phân giải hình ảnh, độ sâu màu / độ sâu bit |
| Thể hiện sự hiểu biết về cách dữ liệu của đồ họa vector được mã hóa | Sử dụng các thuật ngữ: đối tượng vẽ, thuộc tính, danh sách vẽ |
| Giải thích việc sử dụng hình ảnh bitmap hay đồ họa vector cho một nhiệm vụ cụ thể | |
| Thể hiện sự hiểu biết về cách âm thanh được biểu diễn và mã hóa | Sử dụng các thuật ngữ: lấy mẫu, tần số lấy mẫu, độ phân giải lấy mẫu, dữ liệu tương tự và dữ liệu kỹ thuật số |
| Thể hiện sự hiểu biết về tác động của việc thay đổi tần số lấy mẫu và độ phân giải | Bao gồm tác động đến dung lượng tệp và độ chính xác |
Nguồn: Chương trình Cambridge International
Hình ảnh bitmap (còn gọi là hình ảnh bitmapped) lưu màu sắc của từng pixel trong một lưới. Ở đầu tệp, header tệp ghi lại thông tin metadata của hình ảnh — chiều rộng, chiều cao và độ sâu màu — để phần mềm biết cách đọc dữ liệu pixel theo sau.
- độ phân giải hình ảnh: kích thước thực tế của bitmap, chiều rộng × chiều cao tính theo pixel (ví dụ: 1920 × 1080).
- độ phân giải màn hình: chiều rộng × chiều cao mà màn hình hiển thị có thể thể hiện. Nếu độ phân giải hình ảnh lớn hơn màn hình, nó sẽ bị thu nhỏ để vừa vặn; hình ảnh độ phân giải thấp trông bị khối (blocky) khi kéo dãn lên màn hình độ phân giải cao.
- độ sâu màu (độ sâu bit): số bit mỗi pixel. 1 bit → đen/trắng; 8 bit → 256 màu; 24 bit → 16,7 triệu màu ("màu thật").

Kích thước tệp
Chia cho 8 để ra byte, chia cho 1024 để ra KiB, v.v. Ví dụ: một ảnh $3000 \times 2000$ ở 24 bpp là $3000 \times 2000 \times 24 = 1.44 \times 10^{8}$ bit $\approx 17.2\ \text{MiB}$.

Nêu đơn vị bạn đã sử dụng. Chấm điểm chấp nhận $1\ \text{MB} = 10^{6}$ bytes (tiền tố SI) hoặc $1\ \text{MiB} = 1024 \times 1024$ bytes (tiền tố nhị phân), miễn là lời giải của bạn chỉ rõ đơn vị nào; cùng một ảnh sẽ là $18.0\ \text{MB}$ hoặc $17.2\ \text{MiB}$. Cộng thêm kích thước header tệp nếu đề bài cung cấp.
Video là một chuỗi các hình ảnh bitmap, mỗi hình là một khung hình. Trước khi nén, kích thước của video bằng kích thước của một khung hình $\times$ tốc độ khung hình (khung hình mỗi giây) $\times$ thời lượng tính bằng giây: 30 khung hình mỗi giây với $1920 \times 1080$ pixel ở 24 bit là $30 \times 1920 \times 1080 \times 24 \approx 1.5 \times 10^{9}$ bit, khoảng $187\ \text{MB}$, cho mỗi giây. Đó là lý do tại sao video luôn được nén.
Thay đổi cài đặt
- giảm độ phân giải → tệp nhỏ hơn, ít chi tiết (trông bị khối khi phóng to).
- giảm độ sâu màu → tệp nhỏ hơn, nhưng các sắc thái mượt mà sẽ bị hiện tượng banding.
- tăng bất kỳ tham số nào → tệp lớn hơn, chất lượng tốt hơn.
| English | Tiếng Việt |
|---|---|
| bitmap/ˈbɪtmæp/ | bitmap |
| pixel/ˈpɪksl/ | pixel |
| file header/faɪl ˈhedə/ | file header |
| bit depth/bɪt depθ/ | bitness |
| frame/freɪm/ | khung hình |
1.2
Đồ họa vector
Đồ họa vector lưu lệnh vẽ hình ảnh dưới dạng danh sách vẽ — một danh sách có thứ tự các đối tượng vẽ (các nguyên tố hình học: đường thẳng, đường cong, đa giác, hình tròn). Mỗi đối tượng vẽ có các thuộc tính như màu sắc, màu đổ, độ dày đường kẻ và vị trí ( tọa độ). Để hiển thị, chương trình sẽ vẽ lại (render) danh sách vẽ ở bất kỳ độ phân giải nào cần thiết.

Bitmap so với Vector
| Nhiệm vụ | Lựa chọn tốt hơn | Lý do |
|---|---|---|
| Ảnh chụp | Bitmap | Chi tiết mức pixel phức tạp không thể mô tả thành các hình dạng. |
| Logo, biểu tượng, biển báo | Vector | Viền sắc nét; co giãn mọi kích cỡ mà không bị mờ. |
| Bản vẽ kỹ thuật | Vector | Hình học chính xác và khả năng scaling. |
| Tranh vẽ, kết cấu | Bitmap | Chi tiết tông màu mượt mà theo vùng. |
Ưu điểm của Vector: nó co giãn mà không mất chất lượng — logo vector giữ độ sắc nét ở mọi kích cỡ, trong khi bitmap bị mờ khi phóng to. Nhược điểm của Vector: nó không thể mô tả chi tiết pixel tùy ý (như ảnh chụp).
Câu trả lời "justification" (bình luận) liên kết lựa chọn với yêu cầu bài toán. "Logo phải xuất hiện trên danh thiếp và bảng quảng cáo, vì vậy nó nên là đồ họa vector: được lưu dưới dạng đối tượng vẽ và được tái tạo sắc nét ở mọi kích thước, trong khi bitmap sẽ hiển thị các pixel khi phóng to." Đối với ảnh chụp, lập luận ngược lại: không có hình dạng nào để mô tả, vì vậy màu sắc của từng pixel phải được lưu trữ.

Phòng thí nghiệm khái niệm tin học
Phân loại các ví dụ cụ thể theo ý tưởng tin học mà chúng minh họa.
| English | Tiếng Việt |
|---|---|
| vector graphic/ˈvektə ˈɡræfɪk/ | hình ảnh vector |
| drawing list/ˈdrɔːɪŋ lɪst/ | danh sách vẽ |
| drawing objects/ˈdrɔːɪŋ ˈɒbdʒekts/ | đối tượng vẽ |
| primitive/ˈprɪmɪtɪv/ | thông tin cơ bản |
| properties/ˈprɒpətiz/ | thuộc tính |
| render/ˈrendə/ | hiển thị |
| analogue data/ˈænəlɒɡ ˈdeɪtə/ | dữ liệu tương tự |
| digital data/ˈdɪdʒɪtl ˈdeɪtə/ | dữ liệu kỹ thuật số |
1.2
Âm thanh
Sóng liên tục của dữ liệu tương tự (âm thanh) được chuyển đổi thành dữ liệu kỹ thuật số thông qua quá trình lấy mẫu:
- tốc độ lấy mẫu — số mẫu mỗi giây (Hz). Chất lượng CD là $44.1\ \text{kHz}$.
- độ phân giải lấy mẫu (độ sâu bit) — số bit cho biên độ của mỗi mẫu. Chất lượng CD là 16 bit.

Kích thước tệp
Đoạn ghi âm stereo CD dài 10 giây: $44100 \times 16 \times 10 \times 2 = 14\,112\,000$ bits $\approx 1.68\ \text{MiB}$.
Thay đổi cài đặt
- tốc độ lấy mẫu cao hơn → thu được tần số cao hơn, dung lượng file lớn hơn.
- độ phân giải mẫu cao hơn → bước biên độ mịn hơn, ít nhiễu lượng tử hóa hơn, file lớn hơn.
- thấp hơn ở bất kỳ yếu tố nào → file nhỏ hơn, chất lượng giảm rõ rệt.
(Tốc độ lấy mẫu phải ít nhất gấp đôi tần số cao nhất mà bạn muốn giữ lại.)

Lấy mẫu âm thanh
y = a sin(bt + c)
Lấy mẫu đo một sóng âm tại các khoảng thời gian đều đặn — tốc độ cao hơn sẽ sao chép chân thực hơn.
| English | Tiếng Việt |
|---|---|
| sampling/ˈsæmplɪŋ/ | lấy mẫu |
| sampling rate/ˈsæmplɪŋ reɪt/ | tần số lấy mẫu |
| sampling resolution/ˈsæmplɪŋ ˌrezəˈluːʃn/ | độ phân giải lấy mẫu |
| amplitude/ˈæmplɪtjuːd/ | biên độ |
| sample resolution/ˈsæmpl ˌrezəˈluːʃn/ | độ phân giải mẫu |
| quantisation/ˌkwɒntaɪˈzeɪʃn/ | lượng tử hóa |
| bandwidth/ˈbændwɪdθ/ | băng thông |
| lossless/ˈlɒsləs/ | không mất dữ liệu |
| lossy/ˈlɒsi/ | mất dữ liệu |
| run-length encoding/rʌn leŋθ enˈkəʊdɪŋ/ | mã hóa theo độ dài chuỗi |
| dictionary methods/ˈdɪkʃənəri ˈmeθədz/ | phương pháp từ điển |
1.3
Nén dữ liệu
Chương trình
| Thí sinh cần có thể: | Ghi chú và hướng dẫn |
|---|---|
| Thể hiện sự hiểu biết về nhu cầu và ví dụ về việc sử dụng nén | |
| Thể hiện sự hiểu biết về nén mất mát và không mất mát và giải thích việc sử dụng một phương pháp trong một tình huống cụ thể | |
| Thể hiện sự hiểu biết về cách nén tệp văn bản, hình ảnh bitmap, đồ họa vector và tệp âm thanh | Bao gồm việc sử dụng mã hóa độ dài chuỗi (RLE) |
Nguồn: Chương trình Cambridge International
Nén làm giảm kích thước file, tiết kiệm bộ nhớ và băng thông truyền tải. Hai loại:
- không mất dữ liệu — dữ liệu gốc được khôi phục chính xác (văn bản, chương trình, ZIP/PNG).
- mất dữ liệu — một số chi tiết bị bỏ đi để tạo ra file nhỏ hơn nhiều (JPEG, MP3, video).
Khi nào sử dụng loại nào
- không mất dữ liệu cho tài liệu, mã nguồn, ảnh y tế — bất cứ thứ gì cần dữ liệu chính xác.
- mất dữ liệu cho phát trực tuyến phương tiện. Phát trực tuyến video theo thời gian thực sử dụng nén mất dữ liệu vì nó phải gửi lượng dữ liệu khổng lồ theo thời gian thực qua băng thông hạn chế; nén không mất dữ liệu sẽ không làm giảm đủ kích thước. Video HD thô có thể lên đến gigabytes mỗi phút, vì vậy nếu không nén, hình ảnh sẽ liên tục bị giật.
Câu trả lời "justification" nêu phương pháp, sau đó là lý do từ tình huống: "Không mất dữ liệu, vì bảng tính phải được khôi phục chính xác; một giá trị thay đổi duy nhất sẽ khiến sổ sách sai." Hoặc: "Mất dữ liệu, vì những bức ảnh được xem trên màn hình điện thoại nơi chi tiết bị loại bỏ không nhìn thấy được, và file nhỏ hơn tải lên nhanh hơn và chiếm ít bộ nhớ hơn."
Các phương pháp không mất dữ liệu
- mã hóa độ dài chuỗi (RLE): lưu "$n$ giá trị tiếp theo là $x$" thay vì lặp lại $x$. Rất tốt cho các vùng phẳng; vô dụng cho dữ liệu nhiễu.
- phương pháp từ điển (ZIP, PNG): thay thế các chuỗi byte lặp lại bằng tham chiếu ngắn. Tốt cho văn bản và mã code.
- mã Huffman: gán mã ngắn cho ký hiệu thường gặp và mã dài cho ký hiệu hiếm, đưa độ dài mã trung bình tiến gần đến nhiễu loạn của dữ liệu.
Cách mỗi loại file được nén:
- file văn bản: phương pháp từ điển và mã Huffman biến các từ lặp lại và ký hiệu phổ biến thành mã ngắn. Văn bản phải giữ nguyên không mất dữ liệu, vì một ký tự thay đổi sẽ làm thay đổi ý nghĩa.
- ảnh bitmap: RLE cho chuỗi pixel giống nhau (biểu tượng, sơ đồ, scan đen trắng); JPEG mất dữ liệu cho ảnh chụp, hoặc giảm độ sâu màu hoặc độ phân giải.
- đồ họa vector: danh sách vẽ đã nhỏ; loại bỏ các đối tượng vẽ không cần thiết, lưu tọa độ với ít chữ số thập phân hơn, hoặc áp dụng phương pháp không mất dữ liệu như ZIP cho file.
- file âm thanh: MP3 hoặc AAC mất dữ liệu loại bỏ những gì tai người không nghe thấy; tốc độ hoặc độ phân giải lấy mẫu thấp hơn cũng là mất dữ liệu; định dạng không mất dữ liệu giữ lại mọi mẫu nhưng làm giảm kích thước file ít hơn nhiều.




Các phương pháp mất dữ liệu
- ảnh (JPEG): bỏ đi chi tiết tinh vi và sự khác biệt màu sắc mà mắt người khó nhận thấy.
- âm thanh (MP3, AAC): bỏ đi tần số mà ta nghe kém hơn, và âm thanh nhỏ bị che khuất bởi âm thanh lớn hơn.
- video kết hợp nén không gian (trong mỗi khung hình, giống như JPEG) với nén thời gian (hầu hết các khung hình chỉ lưu sự khác biệt so với khung hình trước).

Dịch chuyển logic và số học; Kích thước địa chỉ IP
A dịch chuyển logic di chuyển mẫu bit và điền các vị trí trống bằng 0. Trong dịch chuyển cộng hưởng phải của số nguyên bù hai, bit dấu được sao chép vào các vị trí mới bên trái cùng. Đối với 11110100 tám-bit (−12), dịch chuyển cộng hưởng logic hai lần cho 00111101 (61); dịch chuyển cộng hưởng phải hai lần cho 11111101 (−3). Các bit bị loại bỏ sẽ mất; tràn số và làm tròn có thể ngăn việc dịch chuyển hoạt động giống như phép nhân hoặc chia chính xác.
A địa chỉ IPv4 có 32 bit, thường được hiển thị dưới dạng bốn nhóm số thập phân tám-bit. Một địa chỉ IPv6 có 128 bit, thường được hiển thị dưới dạng tám nhóm bốn chữ số thập phân trước khi cho phép rút gọn. Đây là độ dài địa chỉ, không phải số lượng ký tự trong địa chỉ in.
Mã hóa độ dài chuỗi
Quan sát chuỗi ký hiệu lặp lại bị nén thành một con đếm — nén không mất dữ liệu đơn giản.
| English | Tiếng Việt |
|---|---|
| compression/kəmˈpreʃn/ | nén |
| frame rate/freɪm reɪt/ | tốc độ khung hình |
| Huffman coding/ˈhʌfmən ˈkəʊdɪŋ/ | mã hóa Huffman |
| entropy/ˈentrəpi/ | entropy |
| spatial/ˈspeɪʃl/ | theo không gian |
| temporal/ˈtempərəl/ | theo thời gian |
1.3
Các định nghĩa mà giám khảo chấp nhận
Câu hỏi định nghĩa được chấm dựa trên văn phong cố định. Hãy học thuộc những định nghĩa này và chỉ đưa ra một đáp án duy nhất.
| Thuật ngữ | Định nghĩa |
|---|---|
| bit | một chữ số nhị phân đơn lẻ, 0 hoặc 1 |
| byte | một nhóm gồm 8 bit |
| tiền tố nhị phân | một thừa số là lũy thừa của 2 (kibi = 1024) thay vì lũy thừa của 10 (kilo = 1000) |
| bổ sung hai | cách biểu diễn số nguyên có dấu trong đó bit quan trọng nhất mang giá trị vị trí âm |
| tràn | kết quả của phép tính quá lớn để được biểu diễn trong số bit có sẵn |
| Mã hóa thập phân nhị phân | mỗi chữ số thập phân được lưu trữ dưới dạng mẫu nhị phân 4-bit riêng biệt của nó |
| bộ ký tự | tập hợp các ký tự mà máy tính có thể biểu diễn, mỗi ký tự đều có mã nhị phân riêng |
| điểm ảnh | phần tử nhỏ nhất của hình ảnh bitmap, lưu trữ một giá trị màu |
| độ phân giải hình ảnh | số lượng điểm ảnh trong một hình ảnh, được biểu thị theo chiều rộng x chiều cao |
| độ phân giải màn hình | số lượng điểm ảnh mà màn hình hiển thị có thể hiển thị, được biểu thị theo chiều rộng x chiều cao |
| độ sâu màu | số bit được sử dụng để lưu trữ màu sắc của một điểm ảnh |
| tần số lấy mẫu | số lượng mẫu âm thanh được lấy mỗi giây |
| độ phân giải lấy mẫu | số bit được sử dụng để lưu trữ biên độ của một mẫu |
| nén không mất dữ liệu | quá trình nén cho phép khôi phục lại dữ liệu gốc một cách chính xác |
| nén có mất dữ liệu | quá trình nén loại bỏ vĩnh viễn một phần dữ liệu, do đó không thể khôi phục lại dữ liệu gốc |
| mã hóa độ dài chuỗi | thay thế một chuỗi các giá trị lặp lại bằng một giá trị và một đếm số |
1.3
Mẹo làm bài thi
- Trình bày bài toán chuyển đổi cơ số: thập phân → nhị phân theo giá trị vị trí, nhị phân → thập lục phân trong nibble (nhóm 4 bit).
- Đối với complement hai, bit MSB mang dấu âm; để đảo dấu, hãy đảo ngược và cộng 1; chú ý tràn số khi bit dấu chuyển hướng sai.
- Phân biệt bitmap (point ảnh; dung lượng file $=$ width $\times$ height $\times$ colour depth) và vector (lệnh vẽ; co giãn mà không bị suy giảm chất lượng).
- Dung lượng file âm thanh phụ thuộc vào tần số lấy mẫu $\times$ độ sâu bit $\times$ thời gian — càng nhiều các yếu tố này thì chất lượng càng tốt nhưng dung lượng file cũng càng lớn.
- So sánh nén không mất dữ liệu vs có mất dữ liệu và nêu một ứng dụng cho từng loại.
Lỗi thường gặp
- Giải thích hiện tượng tràn bằng câu "đáp án lớn hơn 255" hoặc "nó có 9 bit". Hãy nêu kích thước từ bit mà đề bài đã cung cấp, sau đó nói rằng kết quả không thể được biểu diễn trong đó.
- Tạo ra một số âm bằng cách đặt bit đầu tiên là 1 và giữ nguyên phần còn lại (dấu và độ lớn). Bổ sung hai yêu cầu phải đảo ngược mọi bit của giá trị dương, sau đó cộng thêm 1.
- Quên việc chèn thêm zeros để mở rộng số vừa chuyển đổi cho phù hợp với độ rộng thanh ghi mà đề bài yêu cầu.
- Trộn lẫn bit và byte trong tính toán dung lượng file. Hãy làm việc bằng bit, chia cho 8 một lần, và nêu rõ bạn đã dùng 1000 hay 1024.
- Trả lời câu "mô tả" bằng ngôn ngữ đời thường ("bức tranh trở nên tệ hơn"). Sử dụng các thuật ngữ chương trình học: ít màu hơn, xuất hiện dải màu, độ phân giải hình ảnh thấp hơn, điểm ảnh lớn hơn.
| English | Tiếng Việt |
|---|---|
| colour depth/ˈkʌlə depθ/ | độ sâu màu |
| image resolution/ˈɪmɪdʒ ˌrezəˈluːʃn/ | độ phân giải hình ảnh |
| screen resolution/skriːn ˌrezəˈluːʃn/ | độ phân giải màn hình |
Bài học tương tác về chủ đề này
Làm theo từng bước, kèm theo bài tập kiểm tra ngay lập tức.