ch2 bieudien du lieu
TRANSCRIPT
CHƯƠNG 2
BIỂU DIỄN DỮ LIỆU
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 2 / 50
NỘI DUNG
I. Thông tin và sự mã hóa thông tin
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 3 / 50
Thông tin và sự mã hóa thông tin
Khái niệm thông tin
Khái niệm về thông tin gắn liền với sự hiểu biết một trạng thái cho sẵn trong nhiều trạng thái có thể có vào một thời điểm cho trước.
Thông tin về 2 trạng thái có ý nghĩa của hiệu điện thế
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 4 / 50
Thông tin và sự mã hóa thông tin
Lượng thông tin và sự mã hoá thông tin
Thông tin được đo lường bằng đơn vị thông tin mà ta gọi là bit
I = Log2(N) I: là lượng thông tin tính bằng bit
N: là số trạng thái có thể có
Lượng thông tin có được là bao nhiêu khi biết được một trong 8 trạng thái?
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 5 / 50
Thông tin và sự mã hóa thông tin
Mã hóa dữ liệuNguyên tắc chung
Mọi dữ liệu đưa vào máy tính đều phải được mã hoá 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
Mã hoá dữ liệu nhân tạo: Dữ liệu dạng số: mã hoá theo chuẩn quy ước Dữ liệu ký tự: mã hoá theo bộ mã ký tự
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 6 / 50
Thông tin và sự mã hóa thông tin
Mã hóa dữ liệu: Mã hoá và tái tạo tín hiệu tự nhiên
ADC
DAC
TH số
TH số
TH Ltục
TH Ltục
TH V.lý
TH V.lý
MT
Bộ tạo tín hiệu
Bộ tái tạo tín hiệu
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 7 / 50
Biểu diễn các số
Khái niệm hệ thống số: Cơ sở của một hệ thống số định nghĩa phạm vi các giá trị của một chữ số
Dạng biểu diễn tổng quát giá trị của một số
Biểu diễn số 541.23410?
in
miik kbV
1 Vk: số cần biểu diễn giá trị
m: Stt của chữ số phần lẻ (từ -1 đến -m)
n-1: Stt của chữ số phần nguyên(từ 0- n-1)
bi: giá trị của chữ số thứ I
k: hệ đếm
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 8 / 50
Chuyển đổi giữa các hệ đếm
Hệ đếm cơ số 10 sang hệ đếm cơ số 2 Hệ đếm cơ số 2 sang hệ đếm cơ số 10 Hệ đếm cơ số 16 sang hệ đếm cơ số 2 Hệ đếm cơ số 2 sang hệ đếm cơ số 16
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 9 / 50
Chuyển đổi giữa các hệ đếm
Phương pháp biến đổi một số thập phân sang số nhị phân
23.37510=????2
23.37510=10111.0112
23.2210=????2
1011 1001.101(2)=185.625(10)
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 10 / 50
Biểu diễn số nguyên
Số nguyên không dấu (unsigned integer) Số nguyên có dấu (signed integer)
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 11 / 50
Số nguyên không dấu
Nguyên tắc chungDùng n chữ số nhị phân thì biểu diễn được 2n sốDải biểu diễn: 0 2n - 1Ví dụ:
n = 8 bit: dải biểu diễn: n = 16 bit: dải biểu diễn:
Cách biểu diễnBiểu diễn ở dạng nhị phân một cách bình thường
0 28 -1, hay 0 255
0 216 - 1, hay 0 65535
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 12 / 50
Số nguyên không dấu
Ví dụ: biểu diễn các số nguyên không dấu sau đây dùng 8 bit:A = 73 ; B = 138
Giải:A = 73 = 0100 1001
B = 138 = 1000 1010
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 13 / 50
Số nguyên không dấu
Ví dụ 2: Hãy xác định giá trị của các số nguyên không dấu C, D được biểu diễn bằng 8 bit như sau:C = 0010 1010; D = 1010 0110
Giải:C = 0010 1010 = 42
D = 1010 0110 = 166
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 14 / 50
Số nguyên có dấu
Nguyên tắc chungDùng n chữ số nhị phân thì biểu diễn được 2n sốDải biểu diễn: - 2n-1 2n-1 – 1Ví dụ:
n = 8 bit: dải biểu diễn: n = 16 bit:
Cách biểu diễn: PP1: Dùng dấu và độ lớn (Sign-Magnitude) PP2: Dùng mã bù 1 (One’s complement) PP3: Dùng mã bù 2 (Two’s complement)
- 27 27-1, hay -128 127
- 215 215 -1 , hay - 32768 32767
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 15 / 50
Số nguyên có dấu
Dùng dấu và độ lớn Bit lớn nhất biểu diễn dấu:
0: biểu diễn số dương 1: biểu diễn số âm
Các bit còn lại biểu diễn giá trị
Trong cách này, bit dn-1 là bit dấu và các bit từ d0 tới dn-2 cho giá trị tuyệt đối. Một từ n bit tương ứng với số nguyên thập phân có dấu.
in
ii
d dN n 2)1(2
0
1
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 16 / 50
Số nguyên có dấu
Một Byte (8 bit) dải biểu diễn của các số có dấu là như thế nào?
Có hai cách biểu diễn số không là 0000 0000 (+0) và 1000 0000 (-0).
Ví dụ:+23 =????; -23 = ???? Vấn đề nảy sinh
Cần quan tâm cả phần dấu và phần độ lớn khi thực hiện các phép toán số học
Có đến 2 cách biểu diễn cho số 0 (+0 và -0)
IBM 7090 sử dụng pp 1 biểu diễn số âm
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 17 / 50
Số nguyên có dấu
Dùng mã bù 1 Đối với số dương: biểu diễn dạng nhị phân Đối với số âm: tìm số bù 1, thêm bit dấu:
Bit lớn nhất biểu diễn dấu: 0: biểu diễn số dương 1: biểu diễn số âm
Đổi số dương tương ứng nhị phân Tìm số bù 1 (đảo bit 1 0, 0 1)
Đặc điểm: Có 2 cách biểu diễn số 0
0000 0000 (+0) 1111 1111 (-0)
PP này dùng trong máy PDP-1, UNIVAC 1100/2200
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 18 / 50
Số nguyên có dấu
Dùng mã bù 2Đối với số dương: biểu diễn dạng nhị phânĐối với số âm: tìm số bù 2:
B1: đổi số dương tương ứng nhị phân B2: tìm số bù 1 (đảo bit 1 0, 0 1) B3: tìm số bù 2: số bù 1 cộng với 1 Số bù 2 thu được chính là cách biểu diễn số âm
Đặc điểm: Thực hiện các phép toán số học dễ dàng Chỉ có một sự biểu diễn duy nhất cho số 0
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 19 / 50
Số nguyên có dấu
Ví dụ 1: Biểu diễn các số nguyên có dấu sau đây bằng 8 bit:
B = - 92 Giải:
B = - 92 =1010 0100
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 20 / 50
Số nguyên có dấu
Ví dụ 2: Xác định giá trị của các số nguyên có dấu biểu diễn dưới đây (dùng dấu - độ lớn):C = 0110 1010; D = 1100 0011 (bù 2)
Giải:C = 0110 1010 = + (64 + 32 + 8 + 2) = 106D = 1100 0011 = - (64 + 2 + 1) = - 67
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 21 / 50
Ví dụ 3: Xác định giá trị của các số nguyên có dấu được biểu diễn dưới đây (dùng mã bù 2):
F = 1101 1010
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 22 / 50
Ví dụ 3: Xác định giá trị của các số nguyên có dấu được biểu diễn dưới đây (dùng mã bù 2):F = 1101 1010
Giải:F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 23 / 50
Hãy đưa ra các giá trị từ -128 đến +127 sử dụng 8bit để biểu diễn
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 24 / 50
Chuyển đổi độ dài
Đối với số dương: thêm/bớt số 0 ở phía trước:+23 = 0001 0111 (8 bit)
+23 = 0000 0000 0001 0111 (16 bit)
Đối với số âm: thêm/bớt số 1 ở phía trước:-23 = 1110 1001 (8 bit)
-23 = 1111 1111 1110 1001 (16 bit)
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 25 / 50
Các phép toán số học
Phép cộng Phép trừ Phép nhân Phép chia
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 26 / 50
Phép cộng (addition)
Cộng số nguyên không dấu Cộng số nguyên có dấu
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 27 / 50
Biểu diễn số nguyên không dấu
Nguyên tắc Khi cộng hai số nguyên không
dấu n bit: Nếu không có nhớ ra khỏi bit cao
nhất thì tổng luôn đúng (Cout = 0) Nếu có nhớ ra ngoài (Carry out)
thì tổng là sai (Cout = 1), ta nói rằng phép cộng đã tràn nhớ
Tràn nhớ ra ngoài xảy ra khi tổng > 2n - 1
A B Tổng Nhớ
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 28 / 50
Biểu diễn số nguyên không dấu
Ví dụ 1:
71 = 0100 0111
25 = 0001 1001
96 = 0110 0000 = 64 + 32 = 96 đúng Ví dụ 2:
251 = 1111 1011
16 = 0001 0000
= ???????
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 29 / 50
Cộng hai số nguyên khác dấu
Khi cộng hai số nguyên có dấu n bit, không quan tâm đến bit nhớ ra ngoài (Cout), kết quả nhận được là n bit:Nếu cộng hai số khác dấu, tổng thu được luôn
luôn đúngCộng hai số cùng dấu, nếu tổng cùng dấu với các
số hạng thì tổng đó đúngCộng hai số cùng dấu, nếu tổng ngược dấu với
các số hạng thì tổng đó sai, ta nói tổng bị tràn (Overflow)
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 30 / 50
Ví dụ 1 (cộng hai số khác dấu tổng đúng):
-71 = 1011 1001 (+71 = 0100 0111)
+25 = 0001 1001
-46 1101 0010 = - 46 đúng Ví dụ 2 (cộng hai số âm tổng đúng):
-51 = 1100 1101 (+51= 0011 0011)
-16 = 1111 0000 (+16 = 0001 0000)
-67 1011 1101 = -67 đúng
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 31 / 50
Phép nhân
Nhân hai số nguyên không dấu Nhân hai số nguyên có dấu
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 32 / 50
Ví dụ
1100 Số bị nhân (12)
x 1011 Số nhân (11)
1100
1100
0000
1100
10000100 Tích (132)
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 33 / 50
Ví dụ
Thực hiện phép nhân sau
1011 * 1101 1011 0000 1011 1011 10001111
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 34 / 50
Nguyên tắc thực hiện phép nhân không dấu
Các tích thành phần được tính như sau:Nếu bit tương ứng của số nhân bằng 0 tích
thành phần bằng 0Nếu bit tương ứng của số nhân bằng 1 tích
thành phần bằng số bị nhânTích thành phần tiếp theo được dịch trái 1 bit so
với tích trước đó Tổng các tích thành phần là Tích cuối cùng Nhân hai số n bit, tích có độ dài 2n bit
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 35 / 50
Nhân số nguyên có dấu
Không thực hiện trực tiếp được trong máy tínhChuyển đổi thành số dương nếu cầnThực hiện nhân như đối với số không dấuNếu hai số khác dấu tích là số âm
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 36 / 50
138 : 12 = 11, dư 6 (138) (12)
Số bị chia 100010 1 0 1100 Số chia 1100 1011 Thương 010101 1100 10010 1100 0110 Số dư
Các số dư thành phần
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 37 / 50
Biểu diễn số thực
Nguyên tắc chung
Một số thực X có thể biểu diễn như sau:
X = (-1)S * M * RE
Trong đó:S (sign): dấu (0: số dương; 1: số âm)M (mantissa): phần định trịR (radix): cơ sốE (exponent): số mũ
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 38 / 50
Ví dụ
X = -1234.567 = (-1)1 * 1234567 * 10-3
S = 1; M = 1234567R = 10; E = -3
X = 0.13579 = (-1)0 * 13579 * 10-5
S = 0; M = 13579; R = 10; E = -5
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 39 / 50
Chuẩn IEEE 754/85
Có 3 dạng:Dạng đơn (single precision): 32 bitDạng kép (double precision): 64 bitDạng kép mở rộng (double-extended precision):
80 bit Cả 3 dạng đều có điểm chung: R = 2
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 40 / 50
Dạng đơn 32bit
M (phần định trị)E (phần mũ)S (dấu)
31 30 23 22 0
23 bit8 bit1 bit
Khi đó, 1 số thực bất kỳ được biểu diễn:X = (-1)S * 1,M * 2E – 127
Dải giá trị biểu diễn:2-127 < X < 2127 hay: 10-38 < X < 1038
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 41 / 50
Chuyển đổi IEEE 754/85 (32 bit)
Bước 1: Đổi số thực đó nhị phân Bước 2: Chuyển về dạng: 1,aa...a * 2b
Bước 3: Xác định các giá trị:S = 0 nếu số dương; S = 1 nếu số âmE – 127 = b E = 127 + b nhị phânM = aa...a00...0
23 bit
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 42 / 50
Ví dụ
Ví dụ 1: 17,625 IEEE 754/85B1: A = 17,625 = 10001,101B2: A = 1,0001101 * 24 (1,aa...a * 2b)B3: Ta có:
S = 0, vì A > 0 E – 127 = 4 E = 131 = 1000 0011 M = 000 1101 0000 0000 0000 0000
A = 0100 0001 1000 1101 0000 0000 0000 0000
= 41 8D 00 00H
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 43 / 50
Ví dụ
Ví dụ 2: -112,3125 IEEE 754/85B1: B = -112,3125 = -1110000,0101
B2: B = -1,1100000101 * 26 (1,aa...a * 2b)B3: Ta có:
S = 1, vì B < 0 E – 127 = 6 E = 133 = 1000 0101 M = 110 0000 1010 0000 0000 0000
A = 1100 0010 1110 0000 1010 0000 0000 0000
= C2 E0 A0 00H
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 44 / 50
Ví dụ 3: -19 / 64 IEEE 754/85B1: C = -19 / 64 = - 0.296875
-0.010011= -1,0011*2-2
B2: C = -1,0011 * 2-2
B3: Ta có: S = 1, vì C < 0 E – 127 = -2 E = 12510 = 0111 11012
M = 001 1000 0000 0000 0000 0000
A = 1011 1110 1001 1000 0000 0000 0000 0000 = BE 98 00 00H
BỘ MÔN KỸ THUẬT MÁY TÍNH – KHOA ĐiỆN TỬ 45 / 50
Ví dụ 4: Tìm giá trị số thực: C2 0D 00 00H Giải: Ta có: X = C2 0D 00 00H = = 1100 0010 0000 1101 0000 0000 0000
0000S = 1 X < 0E = 1000 01002 = 13210 E -127 = 5
M = 000 1101 0000 0000 0000 0000 X = -1,0001101 * 25 = -100011,012 = -35,2510