45
CHƯƠNG 2 BIỂU DIỄN DỮ LIỆU

Ch2 bieudien du lieu

  • Upload
    toa-cao

  • View
    1.313

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Ch2 bieudien du lieu

CHƯƠNG 2

BIỂU DIỄN DỮ LIỆU

Page 2: Ch2 bieudien du lieu

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

Page 3: Ch2 bieudien du lieu

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ế

Page 4: Ch2 bieudien du lieu

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?

Page 5: Ch2 bieudien du lieu

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ự

Page 6: Ch2 bieudien du lieu

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

Page 7: Ch2 bieudien du lieu

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

Page 8: Ch2 bieudien du lieu

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

Page 9: Ch2 bieudien du lieu

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)

Page 10: Ch2 bieudien du lieu

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)

Page 11: Ch2 bieudien du lieu

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

Page 12: Ch2 bieudien du lieu

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

Page 13: Ch2 bieudien du lieu

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

Page 14: Ch2 bieudien du lieu

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

Page 15: Ch2 bieudien du lieu

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

Page 16: Ch2 bieudien du lieu

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

Page 17: Ch2 bieudien du lieu

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

Page 18: Ch2 bieudien du lieu

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

Page 19: Ch2 bieudien du lieu

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

Page 20: Ch2 bieudien du lieu

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

Page 21: Ch2 bieudien du lieu

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

Page 22: Ch2 bieudien du lieu

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

Page 23: Ch2 bieudien du lieu

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

Page 24: Ch2 bieudien du lieu

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)

Page 25: Ch2 bieudien du lieu

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

Page 26: Ch2 bieudien du lieu

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

Page 27: Ch2 bieudien du lieu

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

Page 28: Ch2 bieudien du lieu

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

= ???????

Page 29: Ch2 bieudien du lieu

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)

Page 30: Ch2 bieudien du lieu

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

Page 31: Ch2 bieudien du lieu

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

Page 32: Ch2 bieudien du lieu

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)

Page 33: Ch2 bieudien du lieu

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

Page 34: Ch2 bieudien du lieu

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

Page 35: Ch2 bieudien du lieu

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

Page 36: Ch2 bieudien du lieu

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

Page 37: Ch2 bieudien du lieu

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ũ

Page 38: Ch2 bieudien du lieu

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

Page 39: Ch2 bieudien du lieu

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

Page 40: Ch2 bieudien du lieu

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

Page 41: Ch2 bieudien du lieu

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

Page 42: Ch2 bieudien du lieu

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

Page 43: Ch2 bieudien du lieu

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

Page 44: Ch2 bieudien du lieu

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

Page 45: Ch2 bieudien du lieu

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