Máy tính là thiết bị ña phương tiện
(multimedia device)
Máy tính lưu trữ, xử lý, hiển thị các dạng
dữ liệu:
• Giá trị số (numbers)
• Văn bản (text)
• Hình ảnh (images, graphics)
• Âm thanh (audio)
• Hình ảnh ñộng (video)
108 trang |
Chia sẻ: haohao89 | Lượt xem: 5379 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng nhập môn tin học chương 2: biểu diễn dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHẬP MÔN TIN HỌC
Chương 3
BIỂU DIỄN DỮ LIỆU
2Nội dung chương 3
I. Khái niệm về biểu diễn dữ liệu
II. Biểu diễn số nguyên
III.Biểu diễn số thực
IV.Biểu diễn ký tự
V. Dữ liệu âm thanh, hình ảnh
3I. Khái niệm về biểu diễn dữ liệu
1. Dữ liệu trên máy tính
2. Hệ ñếm theo vị trí
3. Các hệ ñếm thông dụng
4. Chuyển ñổi giữa các hệ ñếm
41. Dữ liệu trên máy tính
Máy tính là thiết bị ña phương tiện
(multimedia device)
Máy tính lưu trữ, xử lý, hiển thị các dạng
dữ liệu:
• Giá trị số (numbers)
• Văn bản (text)
• Hình ảnh (images, graphics)
• Âm thanh (audio)
• Hình ảnh ñộng (video)
5Nén dữ liệu (Data Compression)
Mục tiêu: giảm kích thước lưu trữ dữ liệu
• Tỉ số nén (Compression ratio)
Có hai kỹ thuật chính:
• Nén không mất dữ liệu (lossless): dữ liệu có
thể ñược phục hồi nguyên vẹn từ dữ liệu nén
• Nén có mất dữ liệu (lossly): có một phần dữ
liệu bị mất khi nén
6Dữ liệu dạng nhị phân
Máy tính ñược thiết kế ñể sử dụng dữ liệu
dạng nhị phân:
• Giá thành thấp
• ðộ tin cậy cao
BIT (Binary digiT): chữ số nhị phân
72. Hệ ñếm theo vị trí
Xét ví dụ
642 trong hệ ñếm theo vị trí cơ số 10:
6 x 102 = 6 x 100 = 600
+ 4 x 101 = 4 x 10 = 40
+ 2 x 10º = 2 x 1 = 2
= 64210
(642 trong hệ ñếm 10)
Hệ ñếm
cơ số 10
Số mũ thể hiện
vị trí của chữ số
8Biểu thức tổng quát hệ ñếm theo vị trí
dn-1 * R
n-1 + dn-2 * R
n-2 + ... + d1 * R
1 + d0
X = dn-1dn-2…d1d0
642 = 6 * 102 + 4 * 10 + 2
R là cơ số
của hệ ñếm
n là số chữ số
trong giá trị X
di là chữ số
tại vị trí thứ i
trong giá trị X
9Ví dụ: 642 trong hệ ñếm 12 (64212)
64212= 6*12
2 + 4*12 + 2
= 864 + 48 + 2
= 91410
10
3. Các hệ ñếm thông dụng
Hệ thập phân (decimal) dùng 10 chữ số:
• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Hệ nhị phân (binary) dùng 2 chữ số:
• 0, 1
Hệ bát phân (octal) dùng 8 chữ số:
• 0, 1, 2, 3, 4, 5, 6, 7
Hệ thập lục phân (hexadecimal) dùng 16
chữ số:
• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
11
Một số giá trị cần nhớ
771117
661106
551015
441004
33113
22102
1111
0000
HexOctBinDec
F17111115
E16111014
D15110113
C14110012
B13101111
A12101010
91110019
81010008
HexOctBinDec
12
Một số giá trị cần nhớ (tt)
3225
1624
823
422
221
120
0.52-1
0.252-2
Dec
1048576220
4096212
2048211
1024210
51229
25628
12827
6426
Dec
13
4. Chuyển ñổi giữa các hệ ñếm
Chuyển từ hệ 2, hệ 8, hệ 16 sang hệ 10
Chuyển ñổi giữa hệ 2 và hệ 8
Chuyển ñổi giữa hệ 2 và hệ 16
Chuyển từ hệ 10 sang hệ 2
Chuyển từ hệ 10 sang hệ ñếm cơ số K
14
Chuyển từ hệ 2, hệ 8, hệ 16 sang hệ 10
Dùng ñịnh nghĩa hệ ñếm theo vị trí
Ví dụ
• 101012 = 2
4 + 22 + 1 = 2110
• 3458 = 3*8
2 + 4*8 + 5 = 22910
• AB116 = 10*16
2 + 11*16 + 1 = 273710
15
Chuyển ñổi giữa hệ 2 và hệ 8
Ba bit (nhị phân) tương ñương 1 chữ số
hệ 8
Ví dụ:
• 101001110 = 101 001 110 = 5168
• 10101 = 10 101 = 258
• 1758 = 001 111 101 = 11111012
16
Chuyển ñổi giữa hệ 2 và hệ 16
Bốn bit (nhị phân) tương ñương 1 chữ số
hệ 16
Ví dụ:
• 10100111 = 1010 0111 = A716
• 110110 = 11 0110 = 3616
• 17516 = 0001 0111 0101 = 1011101012
17
Chuyển từ hệ 10 sang hệ 2
Hai phương pháp thông dụng:
Phân tích thành tổng các lũy thừa của 2
Thực hiện các phép chia cho 2
18
Phân tích thành tổng các lũy thừa của 2
Ví dụ: 4510 ?2
45 = 32 + 8 + 4 + 1
= 25 + 23 + 22 + 20
= 1011012
19
Thực hiện các phép chia cho 2
Ví dụ: 4510 ?2 45
22 1
11 0
5 1
2 1
1 0
0 1
1 0 1 1 0 1
20
Chuyển từ hệ 10 sang hệ ñếm cơ số K
Giá trị thập phân X
Thực hiện các phép chia X và các thương
số có ñược cho K, cho ñến khi thương số
là 0
Kết quả là các dư số ñược lấy theo chiều
ngược lại (từ ñáy lên ñỉnh.)
21
Ví dụ: 4510 ?3
45
15 0
5 0
1 2
0 1
1 2 0 0 3
22
Bài tập 1
ðổi các số thập phân sau ñây sang hệ 2,
hệ 8, hệ 16:
• 50, 129, 200, 257, 300
ðổi các số thập phân sau sang hệ 3, hệ 7:
• 50, 150
23
II. Biểu diễn số nguyên
1. Các khái niệm
2. Số nguyên không dấu
3. Số nguyên có dấu
24
1. Các khái niệm
Giá trị X ñược biểu diễn trên n bit
• X: giá trị cần biểu diễn
• n: kích thước biểu diễn
• Với n bit chỉ biểu diễn ñược các giá trị X
trong một khoảng biểu diễn
Số nguyên không dấu (unsigned integer)
Số nguyên có dấu (signed integer)
25
2. Số nguyên không dấu
Dùng biểu diễn nhị phân của giá trị X
Ví dụ:
• X = 1010, n = 4 X = 10102
• X = 1010, n = 8 X = 000010102
• X = 10010, n = 8 X = 011001002
Khoảng biểu diễn: 0 2n-1
• n = 8 : 0 255
• n = 16 : 0 65535
26
Bài tập 2
Tìm biểu diễn nhị phân, bát phân, thập
lục phân của các số thập phân không dấu
sau ñây:
• 81, 102, 250 với n = 8
• 1000, 2050 với n = 16
27
3. Số nguyên có dấu
a. ðộ lớn có dấu (signed magnitude)
b. Mã bù 1 (one’s complement)
c. Mã bù 2 (two’s complement)
d. Mã quá N (excess N, biased)
28
a. ðộ lớn có dấu
Dùng 1 bit thể hiện dấu:
• 0: số dương (+)
• 1: số âm (-)
(n-1) bit còn lại là biểu diễn nhị phân của
ñộ lớn X (trị tuyệt ñối của X)
Ví dụ:
• X = 5, n = 4 X = 0101
• X = -10, n = 8 X = 10001010
29
ðộ lớn có dấu (tt)
Khoảng biểu diễn:
- (2n-1 – 1) +(2n-1 – 1)
• n = 8: -12710 +12710
• n = 16: -3276710 +3276710
Nhận xét: với n = 8
• 00000000 = +0
• 10000000 = -0
ðược sử dụng trên các máy tính thế hệ
ñầu, ví dụ IBM 7090
30
b. Mã bù 1
Dùng phép toán bitwise NOT (ñổi bit 1 thành
bit 0, bit 0 thành bit 1) ñể tạo số âm.
Ví dụ: với n = 4
• 0101 = +5
• 1010 = -5 mã bù 1 của -5 là 1010
Nhận xét: có 1 bit dấu (0:dương, 1:âm)
Khoảng biểu diễn:
- (2n-1 – 1) +(2n-1 – 1)
• n = 8: -12710 +12710
• n = 16: -3276710 +3276710
31
Mã bù 1 (tt)
Nhận xét: với n = 8
• 00000000 = +0
• 11111111 = -0
ðược sử dụng trên các máy tính thế hệ
ñầu, ví dụ PDP-1, UNIVAC 1100
32
c. Mã bù 2
Mã bù 2 của một số âm bằng mã bù 1
cộng thêm 1
Ví dụ: với n = 4
• 0101 = +5
• 1010 = -5 (mã bù 1 của -5 là 1010)
1011 (mã bù 2 của -5 là 1011)
Nhận xét: có 1 bit dấu (0:dương, 1:âm)
33
Mã bù 2 (tt)
Khoảng biểu diễn:
- 2n-1 +(2n-1 – 1)
• n = 8: -12810 +12710
• n = 16: -3276810 +3276710
ðược sử dụng trên các máy tính hiện ñại
(trong CPU, ngôn ngữ lập trình)
34
Tìm mã bù 2
X: giá trị cần biểu diễn, n: số bit dùng biểu diễn
X dương: mã bù 2 là biểu diễn nhị phân
dùng n bit của X
• X=5, n=8, mã bù 2 của 5 là 00000101
X âm:
• Biểu diễn trị tuyệt ñối X dùng n bit
• ðổi bit 1 thành bit 0 và bit 0 thành bit 1
• Cộng thêm 1
35
Tìm mã bù 2 (tt)
Ví dụ: X = -10, n = 8
• 5 = 00001010
• ðổi 10, 01: 11110101
• Cộng thêm 1: mã bù 2 của -10 là 11110110
36
Tìm mã bù 2 (tt)
Phương pháp ñơn giản cho X âm
• Biểu diễn trị tuyệt ñối của X dùng n bit
• Tìm bit 1 ñầu tiên từ bên phải
• ðổi 10, 01 tất cả các bit bên trái bit 1
ñã tìm
Ví dụ: X = -10, n = 8
• 10 = 00001010
• Tìm bit 1 ñầu tiên từ bên phải 00001010
• Mã bù 2 của -10 là 11110110
37
Cộng số bù 2
Ví dụ 1:
1 1 1 1 1 1 1 carries
0 0 0 1 0 1 1 1 (23)
+ 1 1 1 1 0 1 1 1 +(-9)
0 0 0 0 1 1 1 0 14
Ví dụ 2: hiện tượng tràn (overflow)
0 1 1 1 1 carries
0 1 1 1 1 1 1 0 (126)
+ 0 0 0 0 1 0 0 0 +(8)
1 0 0 0 0 1 1 0 ??? (-122)
38
Xác ñịnh kết quả phép cộng số bù 2
Nếu số nhớ vào (carry in) bằng với số
nhớ ra (carry out) trong phép cộng bit dấu
thì không có hiện tượng tràn
Nếu số nhớ vào (carry in) khác với số
nhớ ra (carry out) trong phép cộng bit dấu
thì có hiện tượng tràn
• Overflow: kết quả phép toán vượt ra
ngoài khoảng biểu diễn
39
d. Mã quá N
Còn gọi là phương pháp di chuyển (biased)
Một giá trị nguyên có dấu X ñược biểu
diễn thành một số nguyên không dấu có
giá trị là X+N
Ví dụ: N=7 mã quá 7, n=4
• Mã quá 7 của -5 là 0010
• Mã quá 7 của 5 là 1100
40
Mã quá N (tt)
Khoảng biểu diễn
- N +(2n – 1 - N)
• n = 8, N = 127: -12710 +12810
Mã quá N dùng trong biểu diễn số dấu
chấm ñộng theo tiêu chuẩn IEEE 754
41
Các dạng mã hoá số nguyên với n = 4
42
Bài tập 3
Cho n = 8, tìm mã ñộ lớn có dấu, mã bù
1, mã bù 2, mã quá 127 của các số thập
phân sau ñây:
• 10, 61, 102
• -22, -55, -100
43
III. Biểu diễn số thực
1. Khái niệm về số thực
2. Số dấu chấm tĩnh
3. Số dấu chấm ñộng
4. Tiêu chuẩn số dấu chấm ñộng IEEE 754
44
1. Khái niệm về số thực
Trục số thực: chia làm 7 vùng
Trong khoảng biểu diễn có vô số số thực
• Ví dụ: 20/3 = 6.666…
• Có thể có sai số khi biểu diễn số thực
Số âm
quá lớn
Số dương
quá lớn
Số
âm
quá
nhỏ
Số
dương
quá
nhỏ
KHOẢNG
BIỂU DIỄN
KHOẢNG
BIỂU DIỄN
SỐ 0
45
2. Số dấu chấm tĩnh
Ví dụ:
• +3.2510 , -11.012
Dùng n+m+1 bit ñể biểu diễn:
• 1 bit dấu (0: dương, 1: âm)
• n bit: phần nguyên
• m bit: phần phân số ñúng
Bit dấu Phần nguyên Phần phân số ñúng
1 bit n bit m bit
46
Số dấu chấm tĩnh (tt)
Sai số tuyệt ñối:
Số dương lớn nhất:
Số dương nhỏ nhất:
47
Ví dụ số dấu chấm tĩnh
X = 3.37510, n = 7, m = 8
• 00000011.011000002 = 03.6016
X = -7.2510, n = 7, m = 8
• 10000111.010000002 = 87.4016
48
Ứng dụng số dấu chấm tĩnh
Dùng trong các chương trình tính toán
thương mại (các ứng dụng spreadsheet),
và ñược hỗ trợ trên một số ngôn ngữ lập
trình
49
Bài tập 4
Cho n=7, m=8, tìm biểu diễn số dấu chấm
tĩnh của các số thập phân sau ñây:
• 100.625, -70.3125, -120.4375
50
3. Số dấu chấm ñộng
X là số bất kỳ, có thể phân tích dưới
dạng:
X = m*ae (1)
trong ñó:
a gọi là cơ số (radix)
m gọi là phần ñịnh trị (mantissa)
e gọi là phần bậc (exponent)
51
Số dấu chấm ñộng (tt)
Ví dụ:
• a = 10, X = 3.14
X = 3.14 = 0.314*101 = 31.4*10-1
• a = 2, X = 11.101
X = (11.101)2 =(1.1101*101)2 =(0.11101*10
10)
2
Với cơ số a cho trước, có nhiều cách phân tích
X theo dạng (1)
Vị trí ngăn cách giữa phần nguyên và phần
phân số phụ thuộc phần bậc e không cố ñịnh
như trong biểu diễn số dấu chấm tĩnh biểu
diễn số dấu chấm ñộng
52
Số dấu chấm ñộng (tt)
Nếu ñặt thêm ñiều kiện a-1 ≤ | m | < 1 thì
cách phân tích là duy nhất: dạng chuẩn
Xét lại ví dụ trên:
a = 10, X = 3.1410 = 0.314*10
1
a = 2, X = (11.101)2 = (0.11101*1010)2
53
Khái niệm FLOPS
Dùng trong ñánh giá hiệu suất máy tính
FLoating-point Operations Per Second
• Số tính toán số dấu chấm ñộng trong 1 giây
Khái niệm tương tự MIPS
• Million Instructions Per Second
Số lệnh thực hiện trong một giây,
trong ñó lệnh có thể là tính toán số nguyên,
tính toán số dấu chấm ñộng, tính toán luận
lý, …
54
4. Tiêu chuẩn số dấu chấm ñộng IEEE 754
Do tổ chức IEEE (Institude of Electrical
and Electronic Engineers)
• Mở rộng thành tiêu chuẩn IEEE 854
ðược sử dụng phổ biến trên các ñơn vị số
dấu chấm ñộng (FPU, Floating-Point
Unit) trong các bộ xử lý, và trên các ngôn
ngữ lập trình
55
Tiêu chuẩn IEEE754 (tt)
Tiêu chuẩn IEEE 754 gồm các dạng số chấm
ñộng tiêu chuẩn (normalized):
• Số chính xác ñơn – Single-precision 32 bit
(Số single)
• Số chính xác kép – Double-precision 64 bit
(Số double)
• Số chính xác kép mở rộng –
Double-Extended precision 80 bit (Số extended)
Số extended dùng ñể giảm các lỗi khi làm tròn
số và chỉ dùng bên trong các FPU
56
Tiêu chuẩn IEEE754 (tt)
Các số dấu chấm ñộng IEEE 754 có dạng:
X = S*2e
trong ñó: S là phần ñịnh trị (significand)
e là phần bậc (exponent)
với 1.0 ≤ | S | < 2
S có thể viết thành S = 1.f
trong ñó f là phần phân số (fraction)
X = ± 1.f * 2e
57
Số chính xác ñơn (số single)
Số chính xác ñơn có 32 bit:
• 1 bit dấu (0:dương, 1:âm)
• 8 bit phần bậc dùng mã quá 127
• 23 bit phần phân số (thuộc phần ñịnh trị)
Bit dấu Phần bậc Phần phân số
1 bit 8 bit 23 bit
58
Ví dụ số single
X = 0.510
• 0.5 = 1.0 * 2-1
• Bit dấu: 0
• Phần bậc: -1
mã quá 127 của -1 là -1+127 = 126
12610 = 011111102
• Phần ñịnh trị S = 1.0, phần phân số = 0
Biểu diễn dang số chính xác ñơn của 0.5:
• 0 01111110 00..002 = 3F00000016
23 BIT 0
59
Ví dụ số single (tt)
X = -2010
• -20 = -1.25 * 24
• Bit dấu: 1
• Phần bậc: 4
mã quá 127 của 4 là 4+127 = 131
13110 = 100000112
• Phần ñịnh trị S = 1.25, phần phân số = 0.25
0.2510 = 0.012
Biểu diễn dang số chính xác ñơn của 0.5:
• 1 10000011 010..002 = C1A0000016
21 BIT 0
60
Số chính xác kép (số double)
Số chính xác kép có 64 bit:
• 1 bit dấu (0:dương, 1:âm)
• 11 bit phần bậc dùng mã quá 1023
• 52 bit phần phân số (thuộc phần ñịnh trị)
Bit dấu Phần bậc Phần phân số
1 bit 11 bit 52 bit
61
Các ñặc ñiểm chính của số single, số double
-1022 1023-126 +127Khoảng phần bậc
Mã quá 1023Mã quá 127Biểu diễn phần bậc
6432Tổng số bit
5223Số bit phần ñịnh trị
118Số bit phần bậc
11Số bit dấu
Số doubleSố single
62
Các ñặc ñiểm chính của số single, số double (tt)
≈ 10-324≈ 10-45 Giá trị nhỏ nhất
(dạng số ñặc biệt)
≈ 10-308 10+308≈ 10-38 10+38Khoảng biểu diễn
(theo thập phân)
≈ 2+1024≈ 2+128Giá trị lớn nhất
2-10222-126Giá trị nhỏ nhất
Số doubleSố single
63
Các dạng số ñặc biệt
Tùy ý
khác 0
11…11+/-NaN
(Not a Number)
011…11+/-Vô cực / Vô cùng
(Infinity)
00+/-Zero
Tùy ý
khác 0
0+/-Số không chuẩn
(Denornalized)
Tùy ý
0<exponent<max
+/-Số tiêu chuẩn
(Normalized)
64
Các dạng số ñặc biệt (tt)
Số dạng denormalized dùng ñể biểu diễn
số rất nhỏ
• Số nhỏ nhất là 2-23 * 2-127 = 2-150
Có thể biểu diễn 2 số 0 (+0, -0)
Số vô cực có thể dùng làm toán hạng tuân
theo các quy tắc toán học cho số vô cực
Khi kết quả phép toán không xác ñịnh, ví
dụ ∞/∞ thì dùng dạng NaN (Not a
Number)
65
Làm tròn số (rounding)
Tiêu chuẩn IEEE 754 có các dạng làm
tròn số:
• Unbiased: round to nearest
Làm tròn về số gần nhất
Nếu số cần làm tròn ở giữa 2 giá trị thì làm
tròn về số có bit cuối bên phải là 0
• Toward zero: làm tròn về zero
• Toward positive infinity: làm tròn về +∞
• Toward negative infinity: làm tròn về -∞
66
Bài tập 5
ðổi các giá trị thập phân sau ñây sang
dạng số single (IEEE 754), trình bày kết
quả ở dạng hệ 16:
• -15.5, 20.5, -34
ðổi các số dạng single sau ñây về dạng
thập phân:
• 42E48000H, 3F880000H
67
IV. Biểu diễn ký tự
1. Các khái niệm
2. ASCII
3. Unicode
4. Tiếng Việt trên máy tính
68
1. Các khái niệm
Ký tự trên máy tính (computer character)
là ñơn vị thông tin tương ứng với:
• Một ký hiệu âm tiết (syllabary) trong dạng
viết của ngôn ngữ tự nhiên
• Ký tự ñiều khiển trong xử lý văn bản
Mỗi ký tự ñược mã hoá bằng một chuỗi
bit và ñược liệt kê trong bảng mã
(character encoding scheme) hay bộ ký tự
(character set)
• Ví dụ: ASCII, Unicode
69
Lưu trữ, xử lý và hiển thị ký tự
Mỗi ký tự ñược lưu trữ và xử lý theo vị
trí ký tự trên bảng mã (mã ký tự)
• Ví dụ: ‘A’ có giá trị 41H trong mã ASCII
Các ký tự có biểu diễn ñồ họa (glyph)
trên các thiết bị xuất (màn hình, máy in)
Font chữ (computer font) là file dữ liệu
bao gồm tập hợp các biểu diễn ñồ họa của
các ký tự, ký hiệu theo một dạng
(typeface)
70
Các thông số chính của font chữ
Dạng chữ (typeface)
• Ví dụ: Time New Roman
Loại chữ (style)
• Ví dụ: Normal, Bold, Italic, Bold Italic
Kích thước (cỡ) chữ
• Ví dụ: 12 points, 24 points với point là ñơn
vị trong kỹ thuật in (1 point = 1/72 inch)
71
Ví dụ font chữ
Time New Roman – Bold – 36 point
Arial – Bold Italic – 36 point
French Script – Bold – 48 point
Courier New – Normal – 32 point
72
Các ñịnh dạng chính của dữ liệu font chữ
Bitmap font
• Bao gồm một chuỗi các ñiểm ảnh (pixel)
biểu diễn ảnh của ký tự theo một dạng chữ
trên một cỡ chữ
Outline font
• Bao gồm các ñường cong dạng Bézier, các
lệnh vẽ, các biểu thức toán, cho phép thể
hiện một dạng chữ theo kích thước tùy ý
(scalable)
73
True Type font
Là dạng Outline font ñược sử dụng phổ
biến trên các hệ ñiều hành hiện ñại
Ví dụ: Windows 2K/XP sử dụng True
Type font dạng OpenType
74
2. ASCII
American Standard Code for Information Interchange
Do ANSI (American National Standards
Institude) công bố năm 1967, cập nhật
năm 1986
Bảng mã ASCII dùng biểu diễn ký tự trên
máy tính và các thiết bị truyền thông
75
Mã ASCII (tt)
Mã ASCII chuẩn dùng 7 bit, biểu diễn
ñược 128 ký tự, bao gồm:
• Các ký tự ñiều khiển (control characters) có
giá trị (mã) từ 0 ñến 1Fh
• Các ký tự in ñược (printable characters) có
giá trị (mã) từ 20h ñến 7Fh
Mã ASCII mở rộng dùng 8 bit, bao gồm:
• Phần ASCII chuẩn
• Các ký tự ñặc biệt có giá trị (mã) từ 80h ñến
FFh
76
Mã ASCII chuẩn
77
Mã ASCII mở rộng
78
3. Unicode
a. Giới thiệu Unicode
b. Các ñặc ñiểm chính
79
a. Giới thiệu Unicode
Unicode là tiêu chuẩn mã hóa ký tự của
Hiệp hội Unicode (Unicode Consortium)
bao gồm các nhà sản xuất IBM, Apple,
HP, MicroSoft, Adobe, …
Unicode là một hiện thực của chuẩn ISO
10646 UCS 2 (Universal Character Set)
Unicode ñược hỗ trợ trên các hệ ñiều
hành, trình duyệt web, các tiêu chuẩn
phần mềm hiện ñại như XML, Java,
LDAP, CORBA, …
80
Giới thiệu Unicode (tt)
Mục tiêu của Unicode là cung cấp mã
(code point) duy nhất cho ký tự, ký hiệu
trên tất cả các ngôn ngữ, hệ thống chữ
viết (writing systems)
• Việc hiển thị ký tự (font) do chương trình
ứng dụng (web, word processor, … ) thực
hiện
Unicode là mã 16 bit biểu diễn ñược
65536 ký tự, và có thể mở rộng ñến trên 1
triệu ký tự
81
b. Các ñặc ñiểm chính
Có các phiên bản Unicode: 1.0, 1.1, 2.0,
…, 5.0
Cách thể hiện mã ký tự theo Unicode:
U+xxxx, với x là 1 chữ số hệ 16, ví dụ:
• Latin -1 {U+0080..U+00FF}
• Latin Extended A, B {U+0100..U+024F}
• Combining Diacritical Marks {U+0300..
U+036F}
• Latin Extended Additional {U+1E00..U+1EFF}
• ðơn vị tiền tệ Việt Nam (ðồng): c U+20AB
82
Mã tổ hợp, mã dựng sẵn (dự tác)
Ví dụ: chữ Ở, từ việt
Mã tổ hợp (combining)
• Gồm chữ Ơ (U+01A0) và dấu hỏi (U+0309)
• việt = v + i + e + ^ + . + t
• việt = v + i + ê + . + t
Mã dựng sẵn (precomposed)
• Mã U+1EDE
• việt = v + i + ệ + t
Có chuẩn ñể chuyển ñổi giữa hai dạng trên
NFC (Normalization Form C)
NFD (Normalization Form D)
83
Các sơ ñồ mã hóa chính
UTF (Unicode Transformation Format)
UTF – 16:
• Dạng mã hóa chuẩn, dùng 1 hay 2 số nguyên 16 bit
• ðược dùng trong Windows API, .NET, Java
UTF – 8:
• Gồm 1 ñến 4 byte
• ðược thiết kế ñể tương thích với mã ASCII và các
giao thức trên byte
• Dùng trên Web Browsers, E-Mail
84
Ví dụ UTF-8
E1 BB A9U+1EE9ứ
C6 B0U+01B0ư
C6 A1U+01A1ơ
E1 BB 9CU+1EDCỜ
E1 BB 93U+1ED3ồ
E1 BB 92U+1ED2Ồ
Mã UTF-8Mã Unicode 16 bitChữ Việt
85
4. Tiếng Việt trên máy tính
a. Bảng mã tiếng Việt
b. Các font chữ Việt
c. Chương trình bàn phím tiếng Việt
86
a. Bảng mã tiếng Việt
Các nhóm bảng mã tiếng Việt:
Dựa trên mã ASCII
• Mã 1 byte
• Mã 2 byte
Mã Unicode
87
Mã tiếng Việt 1 byte
Dùng phần mã ASCII mở rộng ñể biểu
diễn các ký tự tiếng Việt
• Không ñủ vì cần 134 mã (Ââ, ðñ, …)
Giải quyết bằng việc dùng chung mã cho
chữ thường và chữ hoa (cần 67 mã), phân
biệt bằng font chữ hoa, chữ thường hoặc
sử dụng 6 mã trong vùng ASCII chuẩn
Ví dụ:TCVN-5712 (font ABC), BKHCM
1 byte, VPS, …
88
Mã tiếng Việt 2 byte
Các nguyên âm có dấu ñược mã hóa bằng
2 byte
Chữ Việt có dấu chữ hoa, chữ thường
trong cùng 1 font
Ví dụ: VNI, BKHCM 2 byte,
89
Tiếng Việt trên mã Unicode
Chính phủ Việt Nam qui ñịnh dùng tiêu chuẩn
TCVN 6909:2001 dùng mã Unicode 16 bit
(theo Unicode 3.1) làm chuẩn mã tiếng Việt
trong trao ñổi thông tin ñiện tử
Unicode dạng dựng sẵn
• Latin Extended Additional {U+1E00..U+1EFF}
Unicode dạng tổ hợp
• Latin -1 {U+0080..U+00FF}
• Latin Extended A, B {U+0100..U+024F}
• Combining Diacritical Marks {U+0300.. U+036F}
90
b. Các font chữ Việt
Các dạng mã 1 byte và 2 byte cần có các
font chữ tương ứng. Ví dụ:
• ABC, BKHCM 2 byte, VNI, …
Mã Unicode dùng các font chữ do hệ ñiều
hành và các phần mềm hỗ trợ
91
c. Chương trình bàn phím tiếng Việt
Keyboard driver
• Chương trình ñiều khiển bàn phím
• Chương trình bàn phím
• Bộ gõ
Nhận chuỗi phím theo quy ñịnh cách
nhập (input method) tiếng Việt, chuyển
ñổi thành mã ký tự Việt theo bảng mã xác
ñịnh
92
Chương trình bàn phím tiếng Việt (tt)
Windows
• Unikey, VietKey, WinVNkey, …
Linux
• X- Unikey, xvnkb
MAC OS
• TCVN/VNI/Telex keyboard layouts
93
Các cách nhập tiếng V