Cấu trúc máy tính
Chƣơng 2
BIỂU DIỄN DỮ LIỆU
& SỐ HỌC MÁY TÍNH
62
Nội dung chƣơng 2
2.1. Các hệ đếm cơ bản
2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính
2.3. Biểu diễn số nguyên
2.4. Các phép toán số học với số nguyên
2.5. Biểu diễn số thực
2.6. Biểu diễn kí tự
63
Các hệ đếm cơ bản
Về mặt toán học, ta có thể biểu diễn số theo hệ
đếm cơ số bất kì.
Khi nghiên cứu về máy tính, ta chỉ quan tâm đến
các hệ đếm sau đây:
Hệ thập phân (Decimal System) → con ngƣời sử dụng
Hệ nhị phân (Binary System) → máy tính sử dụng
Hệ mƣời sáu (Hexadecimal System) → dùng để viết gọn
cho số nhị phân
64
Hệ thập phân
Sử dụng 10 chữ số: 0,1,2,3,4,5,6,7,8,9 để biểu diễn số
Dùng n chữ số thập phân có thể biểu diễn đƣợc 10n giá trị
khác nhau:
00...000 = 0
....
99...999 = 10n-1
Giả sử một số A đƣợc biểu diễn dƣới dạng:
A = an an-1 … a1 a0 . a-1 a-2 … a-m
Giá trị của A đƣợc hiểu nhƣ sau:
A an10 n an 110 n 1 ... a1101 a0100 a110 1 ... am10 m
A
n
i
a
10
i
i m
65
Ví dụ
Số thập phân 472.38 có giá trị đƣợc hiểu nhƣ sau:
472.38 = 4 x 102 + 7 x 101 + 2 x 100 + 3 x 10-1 + 8 x 10-2
66
Mở rộng cho hệ cơ số r (r>1)
Sử dụng r chữ số có giá trị riêng từ 0 đến r-1 để biểu diễn số
Giả sử có số A đƣợc biểu diễn bằng các chữ số của hệ đếm
theo cơ số r nhƣ sau:
A = an an-1 … a1 a0 . a-1 a-2 … a-m
Giá trị của A là:
A an r n an 1r n 1 ... a1r 1 a0 r 0 a1r 1 a2 r 2 ... am r m
A
n
i
a
r
i
i m
Một chuỗi n chữ số của hệ đếm cơ số r sẽ biểu
diễn đƣợc rn giá trị khác nhau.
67
Hệ nhị phân
Sử dụng 2 chữ số: 0,1
Chữ số nhị phân gọi là bit (binary digit)
Bit là đơn vị thông tin nhỏ nhất
Dùng n bit có thể biểu diễn đƣợc 2n giá trị khác nhau:
00...000 = 0
...
11...111 = 2n-1
Giả sử có số A đƣợc biểu diễn theo hệ nhị phân nhƣ sau:
A = an an-1 … a1 a0 . a-1 a-2 … a-m
Với ai là các chữ số nhị phân, khi đó giá trị của A là:
A an 2 n an 1 2 n 1 ... a1 21 a0 20 a1 2 1 a2 2 2 ... am 2 m
A
n
i
a
2
i
i m
68
Ví dụ
Số nhị phân 1101001.1011 có giá trị đƣợc xác định
nhƣ sau:
1101001.1011(2) = 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4
= 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625 = 105.6875(10)
69
Đổi số thập phân sang nhị phân
Thực hiện chuyển đổi phần nguyên và phần lẻ riêng.
Chuyển đổi phần nguyên:
Cách 1: chia dần số đó cho 2, xác định các phần dƣ, rồi viết các số
dƣ theo chiều ngƣợc lại.
Ví dụ: chuyển đổi 105(10) sang hệ nhị phân ta làm nhƣ sau:
105 : 2 = 52 dƣ
1
52 : 2 = 26 dƣ
0
26 : 2 = 13 dƣ
0
13 : 2 = 6 dƣ
1
6:2
= 3 dƣ
0
3:2
= 1 dƣ
1
1:2
= 0 dƣ
1
Nhƣ vậy, ta có: 105(10) = 1101001(2)
70
Đổi số thập phân sang nhị phân
Chuyển đổi phần nguyên (tiếp):
Cách 2: phân tích số đó thành tổng các lũy thừa của 2, sau đó dựa
vào các số mũ để xác định dạng biểu diễn nhị phân.
Ví dụ: 105 = 64 + 32 + 8 + 1 = 26 + 25 + 23 + 20
105(10) = 1101001(2)
Chuyển đổi phần lẻ:
Nhân phần lẻ với 2 rồi lấy phần nguyên ... Sau đó viết các phần
nguyên theo chiều thuận.
Ví dụ: chuyển đổi số 0.6875(10) sang hệ nhị phân:
0.6875 x 2
=
1.3750 phần nguyên
0.375
x2
=
0.750
phần nguyên
0.75
x2
=
1.50
phần nguyên
0.5
x2
=
1.0
phần nguyên
Kết quả là: 0.6875(10) = 0.1011(2)
=
=
=
=
1
0
1
1
71
3. Hệ mƣời sáu (Hexa)
Sử dụng 16 chữ số, kí hiệu
nhƣ sau:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Dùng để viết gọn cho số nhị
phân.
72
Một số ví dụ
Nhị phân Hexa:
Hexa Nhị phân:
Thập phân Hexa:
11 1011 1110 0110(2) = 3BE6(16)
3E8(16) = 11 1110 1000(2)
14988 ?
14988 : 16
=
936
dƣ
936 : 16
=
58
dƣ
58 : 16
=
3
dƣ
3 : 16
=
0
dƣ
Nhƣ vậy, ta có: 14988(10) = 3A8C(16)
Hexa Thập phân:
12 tức là C
8
10 tức là A
3
3A8C ?
3A8C (16) = 3 x 163 + 10 x 162 + 8 x 161 +12 x 160
= 12288 + 2560 + 128 + 12 = 14988(10)
73
Cộng trừ số Hexa
8A9B
+
37CD
C268
B46E
1AC9
99A5
B7E5
+
2AF9
E2DE
FA9D
2BC5
CED8
B800
+
0FFF
8E9A
3FE2
1234
+
ABCD
4B6D
3FEA
CFFF
+
1FFF
A78D
45FB
879D
+
5DF8
98BA
8A9D
74
Nội dung chƣơng 2
2.1. Các hệ đếm cơ bản
2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính
2.3. Biểu diễn số nguyên
2.4. Các phép toán số học với số nguyên
2.5. Biểu diễn số thực
2.6. Biểu diễn kí tự
75
Mã hóa và lƣu trữ dữ liệu
1. Nguyên tắc chung về mã hóa dữ liệu
2. Lƣu trữ thông tin trong bộ nhớ chính
76
1. Nguyên tắc chung về mã hóa dữ liệu
Mọi dữ liệu đƣa vào máy tính đều phải đƣợc mã
hóa thành số nhị phân.
Các loại dữ liệu :
Dữ liệu nhân tạo: do con ngƣời quy ƣớc
Dữ liệu tự nhiên: tồn tại khách quan với con ngƣời
77
Nguyên tắc mã hóa dữ liệu
Mã hóa dữ liệu nhân tạo:
Dữ liệu số nguyên: mã hóa theo chuẩn qui ƣớc
Dữ liệu số thực: mã hóa bằng số dấu chấm động
Dữ liệu ký tự: mã hóa theo bộ mã ký tự
78
Nguyên tắc mã hóa dữ liệu (tiếp)
Mã hóa dữ liệu tự nhiên:
Phổ biến là các tín hiệu vật lý nhƣ âm thanh, hình ảnh, ...
Các dữ liệu tự nhiên cần phải đƣợc số hóa (digitalized) trƣớc khi đƣa
vào trong máy tính.
Sơ đồ mã hóa và tái tạo tín hiệu vật lý:
TÝn hiÖu vËt lý
Bé c¶m biÕn
tÝn hiÖu
(sensor)
TÝn hiÖu ®iÖn
Bé chuyÓn ®æi
liªn tôc
t-¬ng tù - sè
(ADC)
TÝn hiÖu sè
M¸y tÝnh
TÝn hiÖu vËt lý
Bé t¸i t¹o
tÝn hiÖu
TÝn hiÖu ®iÖn
Bé chuyÓn ®æi
liªn tôc
sè - t-¬ng tù
(DAC)
TÝn hiÖu sè
79
Độ dài từ dữ liệu
Độ dài từ dữ liệu:
Là số bit đƣợc sử dụng để mã hóa loại dữ liệu tƣơng
ứng
Trong thực tế, độ dài từ dữ liệu thƣờng là bội số của 8
bit, ví dụ: 8, 16, 32, 64 bit
80
2. Lƣu trữ thông tin trong bộ nhớ chính
Bộ nhớ chính thƣờng đƣợc tổ chức theo Byte
Độ dài từ dữ liệu có thể chiếm 1 hoặc nhiều Byte
Cần phải biết thứ tự lƣu trữ các byte trong bộ nhớ
chính:
Lƣu trữ kiểu đầu nhỏ (Little-endian)
Lƣu trữ kiểu đầu to (Big-endian)
Little-endian: Byte có ý nghĩa thấp hơn đƣợc lƣu
trữ trong bộ nhớ ở vị trí có địa chỉ nhỏ hơn.
Big-endian: Byte có ý nghĩa thấp hơn đƣợc lƣu trữ
trong bộ nhớ ở vị trí có địa chỉ lớn hơn.
81
Ví dụ
Intel 80x86, Pentium: Little-endian
Motorola 680x0, các bộ xử lý RISC: Big-endian
Power PC, Itanium: hỗ trợ cả hai (Bi-endian)
82
Bài tập
Dữ liệu 16 bit có giá trị là 5B9D đƣợc lƣu trữ vào
bộ nhớ chính tổ chức theo kiểu Little-endian bắt
đầu từ byte nhớ có địa chỉ là 1234. Hãy xác định
nội dung các byte nhớ chứa lƣu trữ dữ liệu đó dƣới
dạng nhị phân.
83
Nội dung chƣơng 2
2.1. Các hệ đếm cơ bản
2.2. Mã hóa và lƣu trữ dữ liệu trong máy tính
2.3. Biểu diễn số nguyên
2.4. Các phép toán số học với số nguyên
2.5. Biểu diễn số thực
2.6. Biểu diễn kí tự
84
Biểu diễn số nguyên
1. Số nguyên không dấu
2. Số nguyên có dấu
3. Biểu diễn số nguyên theo mã BCD
85
1. Số nguyên không dấu
Dạng tổng quát: giả sử dùng n bit để biểu diễn cho một số
nguyên không dấu A:
an-1an-2...a3a2a1a0
Giá trị của A đƣợc tính nhƣ sau:
A an 1 2 n 1 an 2 2 n 2 ... a1 21 a0 20
n 1
A ai 2
i
i 0
Dải biểu diễn của A: từ 0 đến 2n-1
86