Chương 3 SỐ HỌC MÁY TÍNH

26
Bài ging Kiến trúc máy tính 18 March 2007 Nguyn Kim Khánh - ĐHBKHN 1 18 March 2007 Bài ging Kiến trúc Máy tính 1 NKK-HUT Kiến trúc máy tính Chương 3 SHC MÁY TÍNH Nguyn Kim Khánh Trưng Đi hc Bách khoa Hà Ni 18 March 2007 Bài ging Kiến trúc Máy tính 2 NKK-HUT Ni dung giáo trình Chương 1. Gii thiu chung Chương 2. Hthng máy tính Chương 3. Shc máy tính Chương 4. Bxlý trung tâm Chương 5. Bnhmáy tính Chương 6. Hthng vào-ra Chương 7. Kiến trúc máy tính tiên tiến 18 March 2007 Bài ging Kiến trúc Máy tính 3 NKK-HUT 3.1. Các hđếm cơ bn 3.2. Mã hóa và lưu trdliu trong máy tính 3.3. Biu din snguyên 3.4. Thc hin các phép toán shc vi snguyên 3.5. Sdu phy động 3.6. Biu din ký tNi dung chương 3 18 March 2007 Bài ging Kiến trúc Máy tính 4 NKK-HUT 3.1. Các hđếm cơ bn Hthp phân (Decimal System) con người sdng Hnhphân (Binary System) máy tính sdng Hmười sáu (Hexadecimal System) dùng để viết gn cho snhphân

Transcript of Chương 3 SỐ HỌC MÁY TÍNH

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 1

18 March 2007 Bài giảng Kiến trúc Máy tính 1

NKK-HUT

Kiến trúc máy tính

Chương 3SỐ HỌC MÁY TÍNH

Nguyễn Kim KhánhTrường Đại học Bách khoa Hà Nội

18 March 2007 Bài giảng Kiến trúc Máy tính 2

NKK-HUT

Nội dung giáo trình

Chương 1. Giới thiệu chungChương 2. Hệ thống máy tínhChương 3. Số học máy tínhChương 4. Bộ xử lý trung tâmChương 5. Bộ nhớ máy tínhChương 6. Hệ thống vào-raChương 7. Kiến trúc máy tính tiên tiến

18 March 2007 Bài giảng Kiến trúc Máy tính 3

NKK-HUT

3.1. Các hệ đếm cơ bản3.2. Mã hóa và lưu trữ dữ liệu trong máy tính 3.3. Biểu diễn số nguyên3.4. Thực hiện các phép toán số học với số nguyên3.5. Số dấu phẩy động3.6. Biểu diễn ký tự

Nội dung chương 3

18 March 2007 Bài giảng Kiến trúc Máy tính 4

NKK-HUT

3.1. Các hệ đếm cơ bản

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

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 2

18 March 2007 Bài giảng Kiến trúc Máy tính 5

NKK-HUT

1. Hệ thập phân

Cơ số 1010 chữ số: 0,1,2,3,4,5,6,7,8,9Dùng n chữ số thập phân có thể biểu diễn được 10n giá trị khác nhau:

00...000 = 099...999 = 10n - 1

18 March 2007 Bài giảng Kiến trúc Máy tính 6

NKK-HUT

Dạng tổng quát của số thập phân

Giá trị của A được hiểu như sau:

mnn a...aaa...aaA −−−= 1011 ,m

mn

nn

n a...aaa...aaA −−

−−

−− +++++++= 101010101010 1

10

01

11

1

in

miiaA 10∑

−=

=

18 March 2007 Bài giảng Kiến trúc Máy tính 7

NKK-HUT

Ví dụ số thập phân

472.38 = 4x102 + 7x101 + 2x100 + 3x10-1 + 8x10-2

Các chữ số của phần nguyên:472 : 10 = 47 dư 2 47 : 10 = 4 dư 7 4 : 10 = 0 dư 4

Các chữ số của phần lẻ:0.38 x 10 = 3.8 phần nguyên = 30.8 x 10 = 8.0 phần nguyên = 8

18 March 2007 Bài giảng Kiến trúc Máy tính 8

NKK-HUT

2. Hệ nhị phân

Cơ số 22 chữ số nhị phân: 0 và 1chữ số nhị phân gọi là bit (binary digit)Bit là đơn vị thông tin nhỏ nhấtDùng n bit có thể biểu diễn được 2n giá trịkhác nhau:

00...000 = 011...111 = 2n - 1

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 3

18 March 2007 Bài giảng Kiến trúc Máy tính 9

NKK-HUT

Dạng tổng quát của số nhị phân

Giá trị của A được tính như sau:

mnn a...aaa...aaA −−−= 1011 ,

mm

nn

nn a...aaa...aaA −

−−

−−

− +++++++= 222222 11

00

11

11

in

miiaA 2∑

−=

=

Có một số nhị phân A như sau:

18 March 2007 Bài giảng Kiến trúc Máy tính 10

NKK-HUT

Ví dụ số nhị phân

1101001.1011(2) =6 5 4 3 2 1 0 -1 -2 -3 -4

= 26 + 25 + 23 + 20 + 2-1 + 2-3 + 2-4

= 64 + 32 + 8 + 1 + 0.5 + 0.125 + 0.0625

= 105.6875(10)

18 March 2007 Bài giảng Kiến trúc Máy tính 11

NKK-HUT

Chuyển đổi số nguyên thập phân sang nhị phân

Phương pháp 1: chia dần cho 2 rồi lấy phần dưPhương pháp 2: Phân tích thành tổng của các số 2i nhanh hơn

18 March 2007 Bài giảng Kiến trúc Máy tính 12

NKK-HUT

Phương pháp chia dần cho 2

Ví dụ: chuyển đổi 105(10)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

Kết quả: 105(10) = 1101001(2)

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 4

18 March 2007 Bài giảng Kiến trúc Máy tính 13

NKK-HUT

Phương pháp phân tích thành tổng của các 2i

Kết quả: 105(10) = 0110 1001(2)

124816326412810010110

2021222324252627

Ví dụ 1: chuyển đổi 105(10)105 = 64 + 32 + 8 +1 = 26 + 25 + 23 + 20

Ví dụ 2: 17000(10) = 16384 + 512 + 64 + 32 + 8 = 214 + 29 + 26 + 25 + 23

17000(10) = 0100 0010 0110 1000(2)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

18 March 2007 Bài giảng Kiến trúc Máy tính 14

NKK-HUT

Chuyển đổi số lẻ thập phân sang nhị phân

Ví dụ 1: chuyển đổi 0.6875(10)

0.6875 x 2 = 1.375 phần nguyên = 10.375 x 2 = 0.75 phần nguyên = 00.75 x 2 = 1.5 phần nguyên = 10.5 x 2 = 1.0 phần nguyên = 1

Kết quả : 0.6875(10)= 0.1011(2)

18 March 2007 Bài giảng Kiến trúc Máy tính 15

NKK-HUT

Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)

Ví dụ 2: chuyển đổi 0.81(10)0.81 x 2 = 1.62 phần nguyên = 10.62 x 2 = 1.24 phần nguyên = 10.24 x 2 = 0.48 phần nguyên = 00.48 x 2 = 0.96 phần nguyên = 00.96 x 2 = 1.92 phần nguyên = 10.92 x 2 = 1.84 phần nguyên = 10.84 x 2 = 1.68 phần nguyên = 1

0.81(10) ≈ 0.1100111(2)

18 March 2007 Bài giảng Kiến trúc Máy tính 16

NKK-HUT

Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)

Ví dụ 3: chuyển đổi 0.2(10)0.2 x 2 = 0.4 phần nguyên = 00.4 x 2 = 0.8 phần nguyên = 00.8 x 2 = 1.6 phần nguyên = 10.6 x 2 = 1.2 phần nguyên = 10.2 x 2 = 0.4 phần nguyên = 00.4 x 2 = 0.8 phần nguyên = 00.8 x 2 = 1.6 phần nguyên = 10.6 x 2 = 1.2 phần nguyên = 1

0.2(10) ≈ 0.00110011 (2)

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 5

18 March 2007 Bài giảng Kiến trúc Máy tính 17

NKK-HUT

3. Hệ mười sáu (Hexa)

Cơ số 1616 chữ số: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,FDùng để viết gọn cho số nhị phân: cứ một nhóm 4-bit sẽ được thay bằng một chữ sốHexa

18 March 2007 Bài giảng Kiến trúc Máy tính 18

NKK-HUT

Quan hệ giữa số nhị phân và số Hexa

F1111

E1110

D1101

C1100

B1011

A1010

91001

81000

70111

60110

50101

40100

30011

20010

10001

00000

Chữ số Hexa4-bit

Ví dụ chuyển đổi số nhị phân số Hexa:1011 00112 = B316

0000 00002 = 0016

0010 1101 1001 10102 = 2D9A16

1111 1111 1111 11112 = FFFF16

18 March 2007 Bài giảng Kiến trúc Máy tính 19

NKK-HUT

3.2. Mã hóa và lưu trữ dữ liệu trong máy tính

Mọi dữ liệu đưa vào máy tính đều phải được mã hóa thành số nhị phânCác loại dữ liệu

Dữ liệu nhân tạo: do con người qui ướcDữ liệu tự nhiên: tồn tại khách quan với con người

1. Nguyên tắc chung về mã hóa dữ liệu

18 March 2007 Bài giảng Kiến trúc Máy tính 20

NKK-HUT

Mã hoá dữ liệu nhân tạo

Mã hóa theo các chuẩn qui ướcDữ liệu số:

Số nguyên: mã hóa theo một số chuẩn Số thực: mã hóa bằng số dấu phẩy động

Dữ liệu ký tự: mã hóa theo bộ mã ký tự

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 6

18 March 2007 Bài giảng Kiến trúc Máy tính 21

NKK-HUT

Mã hóa và tái tạo tín hiệu vật lý

Các dữ liệu vật lý thông dụngÂm thanhHình ảnh

18 March 2007 Bài giảng Kiến trúc Máy tính 22

NKK-HUT

Độ 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 ứngThường là bội của 8-bitVD: 8, 16, 32, 64 bit

18 March 2007 Bài giảng Kiến trúc Máy tính 23

NKK-HUT

2. Thứ tự lưu trữ các byte trong bộ nhớ chính

Bộ nhớ chính thường tổ chức theo byteHai cách lưu trữ dữ liệu nhiều byte:Đầu nhỏ (Little-endian): Byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉnhỏ, byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ lớn.Đầu to (Big-endian): Byte có ý nghĩa cao được lưu trữ ở ngăn nhớ có địa chỉ nhỏ, byte có ý nghĩa thấp được lưu trữ ở ngăn nhớ có địa chỉ lớn.

18 March 2007 Bài giảng Kiến trúc Máy tính 24

NKK-HUT

Ví dụ lưu trữ dữ liệu 32-bit

0001 1010 0010 1011 0011 1100 0100 1101

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 7

18 March 2007 Bài giảng Kiến trúc Máy tính 25

NKK-HUT

Lưu trữ của các bộ xử lý điển hình

Intel 80x86 và các Pentium: little-endianMotorola 680x0, SunSPARC: big-endianPower PC, Itanium: bi-endian

18 March 2007 Bài giảng Kiến trúc Máy tính 26

NKK-HUT

3.3. Biểu diễn số nguyên

Số nguyên không dấu (Unsigned Integer)Số nguyên có dấu (Signed Integer)

18 March 2007 Bài giảng Kiến trúc Máy tính 27

NKK-HUT

1. Biểu diễn số nguyên không dấu

Giá trị của A được tính như sau:

in

iiaA 2

1

0∑−

=

=

Nguyên tắc tổng quát: Dùng n bit biểu diễn sốnguyên không dấu A:

01221 aaa...aa nn −−

Dải biểu diễn của A: từ 0 đến 2n – 1

18 March 2007 Bài giảng Kiến trúc Máy tính 28

NKK-HUT

Các ví dụ

Ví dụ 1. Biểu diễn các số nguyên không dấu sau đây bằng 8-bit:

A = 41 ; B = 150Giải:A = 41 = 32 + 8 + 1 = 25 + 23 + 20

41 = 0010 1001

B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21

150 = 1001 0110

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 8

18 March 2007 Bài giảng Kiến trúc Máy tính 29

NKK-HUT

Các ví dụ (tiếp)

Ví dụ 2. Cho các số nguyên không dấu M, N được biểu diễn bằng 8-bit như sau:

M = 0001 0010N = 1011 1001

Xác định giá trị của chúng ?Giải:

M = 0001 0010 = 24 + 21 = 16 +2 = 18N = 1011 1001 = 27 + 25 + 24 + 23 + 20

= 128 + 32 + 16 + 8 + 1 = 185

18 March 2007 Bài giảng Kiến trúc Máy tính 30

NKK-HUT

Với n = 8 bit

0000 0000 = 00000 0001 = 10000 0010 = 20000 0011 = 3

...1111 1111 = 255

Biểu diễn được các giá trị từ 0 đến 255

Chú ý:1111 1111

+ 0000 00011 0000 0000

Vậy: 255 + 1 = 0 ?do tràn nhớ ra

ngoài

18 March 2007 Bài giảng Kiến trúc Máy tính 31

NKK-HUT

Trục số học với n = 8 bit

Trục số học:

Trục số học máy tính:

18 March 2007 Bài giảng Kiến trúc Máy tính 32

NKK-HUT

Với n = 16 bit, 32 bit, 64 bit

n= 16 bit: dải biểu diễn từ 0 đến 65535 (216 – 1)0000 0000 0000 0000 = 0...0000 0000 1111 1111 = 2550000 0001 0000 0000 = 256...1111 1111 1111 1111 = 65535

n= 32 bit: dải biểu diễn từ 0 đến 232 - 1n= 64 bit: dải biểu diễn từ 0 đến 264 - 1

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 9

18 March 2007 Bài giảng Kiến trúc Máy tính 33

NKK-HUT

2. Biểu diễn số nguyên có dấu

a. Số bù chín và Số bù mười

Cho một số thập phân A được biểu diễn bằng n chữ số thập phân, ta có:

Số bù chín của A = (10n-1) – ASố bù mười của A = 10n – A

Số bù mười của A = (Số bù chín của A) +1

18 March 2007 Bài giảng Kiến trúc Máy tính 34

NKK-HUT

Số bù chín và Số bù mười (tiếp)

Ví dụ: với n=4, cho A = 3265Số bù chín của A:

9999 (104-1)- 3265 (A)

6734Số bù mười của A:

10000 (104)- 3265 (A)

6735

18 March 2007 Bài giảng Kiến trúc Máy tính 35

NKK-HUT

b. Số bù một và Số bù hai

Định nghĩa: Cho một số nhị phân A được biểu diễn bằng n bit, ta có:

Số bù một của A = (2n-1) – ASố bù hai của A = 2n – A

Số bù hai của A = (Số bù một của A) +1

18 March 2007 Bài giảng Kiến trúc Máy tính 36

NKK-HUT

Số bù một và Số bù hai (tiếp)Ví dụ: với n = 8 bit, cho A = 0010 0101

Số bù một của A được tính như sau:1111 1111 (28-1)

- 0010 0101 (A)1101 1010

đảo các bit của A Số bù hai của A được tính như sau:

1 0000 0000 (28)- 0010 0101 (A)

1101 1011 thực hiện khó khăn

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 10

18 March 2007 Bài giảng Kiến trúc Máy tính 37

NKK-HUT

Quy tắc tìm Số bù một và Số bù hai

Số bù một của A = đảo giá trị các bit của A(Số bù hai của A) = (Số bù một của A) + 1Ví dụ:

Cho A = 0010 0101Số bù một = 1101 1010

+ 1Số bù hai = 1101 1011

Nhận xét: A = 0010 0101

Số bù hai = + 1101 10111 0000 0000 = 0

(bỏ qua bit nhớ ra ngoài)Số bù hai của A = -A

18 March 2007 Bài giảng Kiến trúc Máy tính 38

NKK-HUT

c. Biểu diễn số nguyên có dấu bằng mã bù hai

Với A là số dương: bit an-1 = 0, các bit còn lại biểu diễn độ lớn như số không dấu Với A là số âm: được biểu diễn bằng số bù hai của số dương tương ứng, vì vậy bit an-1 = 1

01221 aaa...aa nn −−

Nguyên tắc tổng quát: Dùng n bit biểu diễn sốnguyên có dấu A:

18 March 2007 Bài giảng Kiến trúc Máy tính 39

NKK-HUT

Biểu diễn số dương

0122n aaa...a0 −

in

iiaA 2

2

0∑−

=

=

Giá trị của số dương A:

Dạng tổng quát của số dương A:

Dải biểu diễn cho số dương: 0 đến 2n-1-1

18 March 2007 Bài giảng Kiến trúc Máy tính 40

NKK-HUT

Biểu diễn số âm

0122n aaa...a1 −

Dạng tổng quát của số âm A:

in

ii

n aA 222

0

1 ∑−

=

− +−=

Giá trị của số âm A:

Dải biểu diễn cho số âm: -1 đến -2n-1

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 11

18 March 2007 Bài giảng Kiến trúc Máy tính 41

NKK-HUT

Biểu diễn tổng quát cho số nguyên có dấu

01221 aaa...aa nn −−

Dạng tổng quát của số nguyên A:

in

ii

nn aaA 22

2

0

11 ∑

=

−− +−=

Giá trị của A được xác định như sau:

Dải biểu diễn: từ -(2n-1) đến +(2n-1-1)

18 March 2007 Bài giảng Kiến trúc Máy tính 42

NKK-HUT

Các ví dụVí dụ 1. Biểu diễn các số nguyên có dấu sau đây bằng 8-bit:

A = +58 ; B = -80Giải:

A = +58 = 0011 1010

B = -80Ta có: + 80 = 0101 0000Số bù một = 1010 1111

+ 1Số bù hai = 1011 0000

Vậy: B = -80 = 1011 0000

18 March 2007 Bài giảng Kiến trúc Máy tính 43

NKK-HUT

Các ví dụ

Ví dụ 2. Hãy xác định giá trị của các số nguyên có dấu được biểu diễn dưới đây:

P = 0110 0010Q = 1101 1011

Giải:P = 0110 0010 = 64+32+2 = +98 Q = 1101 1011 = -128+64+16+8+2+1 = -37

18 March 2007 Bài giảng Kiến trúc Máy tính 44

NKK-HUT

Với n = 8 bit

0000 0000 = 00000 0001 = +10000 0010 = +20000 0011 = +3

...0111 1111 = +1271000 0000 = - 1281000 0001 = - 127...

1111 1110 = -21111 1111 = -1

Biểu diễn được các giá trị từ -128 đến +127

Chú ý:+127 + 1 = -128-128 - 1 = +127

do tràn xảy ra

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 12

18 March 2007 Bài giảng Kiến trúc Máy tính 45

NKK-HUT

Trục số học số nguyên có dấu với n = 8 bit

Trục số học:

Trục số học máy tính:

18 March 2007 Bài giảng Kiến trúc Máy tính 46

NKK-HUT

Với n = 16 bit, 32 bit, 64 bit

Với n=16bit: biểu diễn từ -32768 đến +327670000 0000 0000 0000 = 00000 0000 0000 0001 = +1...0111 1111 1111 1111 = +327671000 0000 0000 0000 = -32768...1111 1111 1111 1111 = -1

Với n=32bit: biểu diễn từ -231 đến 231-1Với n=64bit: biểu diễn từ -263 đến 263-1

18 March 2007 Bài giảng Kiến trúc Máy tính 47

NKK-HUT

Chuyển đổi từ byte thành word

Đối với số dương: +19 = 0001 0011 (8bit)+19 = 0000 0000 0001 0011 (16bit)

thêm 8 bit 0 bên trái

Đối với số âm:- 19 = 1110 1101 (8bit) - 19 = 1111 1111 1110 1101 (16bit)

thêm 8 bit 1 bên trái

18 March 2007 Bài giảng Kiến trúc Máy tính 48

NKK-HUT

3. Biểu diễn số nguyên theo mã BCD

Binary Coded Decimal CodeDùng 4 bit để mã hóa cho các chữ sốthập phân từ 0 đến 9:

0 0000 5 01011 0001 6 01102 0010 7 01113 0011 8 10004 0100 9 1001

còn 6 tổ hợp không sử dụng: 1010, 1011, 1100, 1101, 1110, 1111

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 13

18 March 2007 Bài giảng Kiến trúc Máy tính 49

NKK-HUT

Ví dụ số BCD

35 0011 0101BCD

61 0110 0001BCD

1087 0001 0000 1000 0111BCD

9640 1001 0110 0100 0000BCD

18 March 2007 Bài giảng Kiến trúc Máy tính 50

NKK-HUT

Các kiểu lưu trữ số BCD

BCD không gói (Unpacked BCD):Mỗi số BCD 4-bit được lưu trữ trong 4-bit thấp của mỗi byte.

Ví dụ: Số 35 được lưu trữ như sau:

BCD gói (Packed BCD): Hai số BCD được lưu trữ trong 1 byte.

Ví dụ: Số 35 được lưu trữ như sau:

18 March 2007 Bài giảng Kiến trúc Máy tính 51

NKK-HUT

Phép cộng số BCD

35 0011 0101BCD

+ 61 + 0110 0001BCD

96 1001 0110BCD

kết quả đúng (không phải hiệu chỉnh)

87 1000 0111BCD

+ 96 + 1001 0110BCD

183 1 0001 1101 kết quả sai+ 0110 0110 hiệu chỉnh

0001 1000 0011BCD kết quả đúng1 8 3

Hiệu chỉnh: cộng thêm 6 ở những vị trí có nhớ (>9)18 March 2007 Bài giảng Kiến trúc Máy tính 52

NKK-HUT

3.4. Thực hiện các phép toán số học với số nguyên

1. Phép cộng số nguyên không dấuBộ cộng n-bit

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 14

18 March 2007 Bài giảng Kiến trúc Máy tính 53

NKK-HUT

Nguyên tắc cộng số nguyên không dấu

Khi cộng hai số nguyên không dấu n-bit, kết quả nhận được là n-bit:Nếu Cout=0 nhận được kết quả đúng.Nếu Cout=1 nhận được kết quả sai, do tràn nhớ ra ngoài (Carry Out).Tràn nhớ ra ngoài khi: tổng > (2n – 1)

18 March 2007 Bài giảng Kiến trúc Máy tính 54

NKK-HUT

Ví dụ cộng số nguyên không dấu

57 = 0011 1001+ 34 = + 0010 0010

91 0101 1011 = 64+16+8+2+1=91 đúng

209 = 1101 0001+ 73 = + 0100 1001

282 1 0001 1010 0001 1010 = 16+8+2=26 sai

có tràn nhớ ra ngoài (Cout=1)

Để có kết quả đúng ta thực hiện cộng theo 16-bit: 209 = 0000 0000 1101 0001

+ 73 = + 0000 0000 0100 10010000 0001 0001 1010 = 256+16+8+2 = 282

18 March 2007 Bài giảng Kiến trúc Máy tính 55

NKK-HUT

2. Phép đảo dấu

Ta có:+ 37 = 0010 0101

bù một = 1101 1010+ 1

bù hai = 1101 1011 = -37

Lấy bù hai của số âm:- 37 = 1101 1011

bù một = 0010 0100+ 1

bù hai = 0010 0101 = +37

Kết luận: Phép đảo dấu trong máy tính thực chất làlấy bù hai

18 March 2007 Bài giảng Kiến trúc Máy tính 56

NKK-HUT

3. Cộng số nguyên có dấu

Khi cộng hai số nguyên có dấu n-bit, kết quảnhận được là n-bit và không cần quan tâm đến bit Cout

.

Cộng hai số khác dấu: kết quả luôn luôn đúng.Cộng hai số cùng dấu:

nếu dấu kết quả cùng dấu với các số hạng thì kết quả là đúng.nếu kết quả có dấu ngược lại, khi đó có tràn xảy ra (Overflow) và kết quả bị sai.

Tràn xảy ra khi tổng nằm ngoài dải biểu diễn:[ -(2n-1),+(2n-1-1)]

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 15

18 March 2007 Bài giảng Kiến trúc Máy tính 57

NKK-HUT

Ví dụ cộng số nguyên có dấu không tràn( + 70) = 0100 0110

+ ( + 42) = 0010 1010+ 112 0111 0000 = +112

(+ 97) = 0110 0001+ (- 52) = 1100 1100 (+52=0011 0100)

+ 45 1 0010 1101 = +45

( - 90) = 1010 0110 (+90=0101 1010)+ ( +36) = 0010 0100

- 54 1100 1010 = - 54

( - 74) = 1011 0110 (+74=0100 1010)+( - 30) = 1110 0010 (+30=0001 1110)

-104 1 1001 1000 = -10418 March 2007 Bài giảng Kiến trúc Máy tính 58

NKK-HUT

Ví dụ cộng số nguyên có dấu bị tràn( + 75) = 0100 1011

+( + 82) = 0101 0010+157 1001 1101

= - 128+16+8+4+1= -99 sai

( - 104) = 1001 1000 (+104=0110 1000)+ ( - 43) = 1101 0101 (+ 43 =0010 1011)

- 147 1 0110 1101 = 64+32+8+4+1= +109 sai

Cả hai ví dụ đều tràn vì tổng nằm ngoài dải biểu diễn [-128, +127]

18 March 2007 Bài giảng Kiến trúc Máy tính 59

NKK-HUT

4. Nguyên tắc thực hiện phép trừ

Phép trừ hai số nguyên: X-Y = X+(-Y)Nguyên tắc: Lấy bù hai của Y để được –Y, rồi cộng với X

18 March 2007 Bài giảng Kiến trúc Máy tính 60

NKK-HUT

5. Nhân số nguyên không dấu

1011 Số bị nhân (11)x 1101 Số nhân (13)

10110000 Các tích riêng phần

10111011

10001111 Tích (143)

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 16

18 March 2007 Bài giảng Kiến trúc Máy tính 61

NKK-HUT

Nhân số nguyên không dấu (tiếp)

Các tích riêng phần được xác định như sau:Nếu bit của số nhân bằng 0 tích riêng phần bằng 0. Nếu bit của số nhân bằng 1 tích riêng phần bằng sốbị nhân.Tích riêng phần tiếp theo được dịch trái một bit so với tích riêng phần trước đó.

Tích bằng tổng các tích riêng phầnNhân hai số nguyên n-bit, tích có độ dài 2n bit (không bao giờ tràn).

18 March 2007 Bài giảng Kiến trúc Máy tính 62

NKK-HUT

Bộ nhân số nguyên không dấu

18 March 2007 Bài giảng Kiến trúc Máy tính 63

NKK-HUT

Lưu đồ nhân số nguyên không dấu

18 March 2007 Bài giảng Kiến trúc Máy tính 64

NKK-HUT

Ví dụ nhân số nguyên không dấuSố bị nhân M = 1011 (11)Số nhân Q = 1101 (13)Tích = 1000 1111 (143)

C A Q0 0000 1101 Các giá trị khởi đầu

+ 10110 1011 1101 A ← A + M0 0101 1110 Dịch phải0 0010 1111 Dịch phải

+ 10110 1101 1111 A ← A + M0 0110 1111 Dịch phải

+ 10111 0001 1111 A ← A + M0 1000 1111 Dịch phải

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 17

18 March 2007 Bài giảng Kiến trúc Máy tính 65

NKK-HUT

6. Nhân số nguyên có dấu

Sử dụng thuật giải nhân không dấuSử dụng thuật giải Booth

18 March 2007 Bài giảng Kiến trúc Máy tính 66

NKK-HUT

Sử dụng thuật giải nhân không dấu

Bước 1. Chuyển đổi số bị nhân và sốnhân thành số dương tương ứngBước 2. Nhân hai số dương bằng thuật giải nhân số nguyên không dấu, được tích của hai số dương.Bước 3. Hiệu chỉnh dấu của tích:

Nếu hai thừa số ban đầu cùng dấu thì giữnguyên kết quả ở bước 2. Nếu hai thừa số ban đầu là khác dấu thì đảo dấu kết quả của bước 2.

18 March 2007 Bài giảng Kiến trúc Máy tính 67

NKK-HUT

Thuật giải Booth B¾t ®Çu

A := 0, Q-1 := 0 M := Sè bÞ nh©n Q := Sè nh©n Bé ®Õm := n

Bé ®Õm = 0 ?

KÕt thóc

=01=10 Q0,Q-1 = ?

A := A + M

DÞch ph¶i sè häc A,Q,Q-1

Bé ®Õm:=Bé ®Õm-1

Yes

No

A := A - M =00=11

18 March 2007 Bài giảng Kiến trúc Máy tính 68

NKK-HUT

7. Chia số nguyên không dấu

Số bị chia 10010011 1011 Số chia 1011 00001101 Thương

0011101011001111

1011100 Phần dư

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 18

18 March 2007 Bài giảng Kiến trúc Máy tính 69

NKK-HUT

Bộ chia số nguyên không dấu

18 March 2007 Bài giảng Kiến trúc Máy tính 70

NKK-HUT

Lưu đồ chia số nguyên không dấu

18 March 2007 Bài giảng Kiến trúc Máy tính 71

NKK-HUT

8. Chia số nguyên có dấu

Bước 1. Chuyển đổi số bị chia và số chia về thành số dương tương ứng. Bước 2. Sử dụng thuật giải chia số nguyên không dấu đểchia hai số dương, kết quả nhận được là thương Q vàphần dư R đều là dươngBước 3. Hiệu chỉnh dấu của kết quả như sau:(Lưu ý: phép đảo dấu thực chất là thực hiện phép lấy bù hai)

đảo dấuđảo dấudươngâm

giữ nguyêngiữ nguyêndươngdương

đảo dấugiữ nguyênâmâm

giữ nguyênđảo dấuâmdương

Số dưThươngSố chiaSố bị chia

18 March 2007 Bài giảng Kiến trúc Máy tính 72

NKK-HUT

3.5. Số dấu phẩy động1. Nguyên tắc chung

Floating Point Number biểu diễn cho sốthựcTổng quát: một số thực X được biểu diễn theo kiểu số dấu phẩy động như sau:

X = M * RE

M là phần định trị (Mantissa),R là cơ số (Radix),E là phần mũ (Exponent).

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 19

18 March 2007 Bài giảng Kiến trúc Máy tính 73

NKK-HUT

2. Chuẩn IEEE754/85

Cơ số R = 2Các dạng:

Dạng 32-bitDạng 44-bitDạng 64-bitDạng 80-bit

18 March 2007 Bài giảng Kiến trúc Máy tính 74

NKK-HUT

Các dạng biểu diễn chính

18 March 2007 Bài giảng Kiến trúc Máy tính 75

NKK-HUT

Dạng 32 bit

S là bit dấu:S = 0 số dươngS = 1 số âm

e (8 bit) là mã excess-127 của phần mũ E:e = E+127 E = e – 127 giá trị 127 gọi là là độ lệch (bias)

m (23 bit) là phần lẻ của phần định trị M:M = 1.m

Công thức xác định giá trị của số thực:X = (-1)S

*1.m * 2e-127

18 March 2007 Bài giảng Kiến trúc Máy tính 76

NKK-HUT

Ví dụ 1

Xác định giá trị của số thực được biểu diễn bằng 32-bit như sau:1100 0001 0101 0110 0000 0000 0000 0000

S = 1 số âme = 1000 00102 = 130 E = 130-127=3

Vậy X = -1.10101100 * 23 = -1101.011 = -13.375

0011 1111 1000 0000 0000 0000 0000 0000 = ?= +1.0

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 20

18 March 2007 Bài giảng Kiến trúc Máy tính 77

NKK-HUT

Ví dụ 2

Biểu diễn số thực X= 83.75 về dạng số dấu phẩy động IEEE754 32-bit

Giải:X = 83.75(10) = 1010011.11(2) = 1.01001111 x 26

Ta có:S = 0 vì đây là số dươngE = e-127 = 6 e = 127 + 6 = 133(10) = 1000 0101(2)

Vậy:X = 0100 0010 1010 0111 1000 0000 0000 0000

18 March 2007 Bài giảng Kiến trúc Máy tính 78

NKK-HUT

Ví dụ 3

Biểu diễn số thực X= -0,2 về dạng số dấu phẩy động IEEE754 32-bit

Giải:X = -0,2(10) = - 0.00110011...0011...(2) =

= - 1.100110011..0011... x 2-3

Ta có:S = 1 vì đây là số âmE = e-127 = -3 e = 127 -3 = 124(10) = 0111 1100(2)

Vậy:X = 1011 1110 0100 1100 1100 1100 1100 1100

18 March 2007 Bài giảng Kiến trúc Máy tính 79

NKK-HUT

Bài tập

Biểu diễn các số thực sau đây về dạng sốdấu phẩy động IEEE754 32-bit:

X = - 27.0625; Y = 1/32

18 March 2007 Bài giảng Kiến trúc Máy tính 80

NKK-HUT

Các qui ước đặc biệt

Các bit của e bằng 0, các bit của m bằng 0, thì X = ± 0x000 0000 0000 0000 0000 0000 0000 0000 X = ± 0

Các bit của e bằng 1, các bit của m bằng 0, thì X = ± ∞x111 1111 1000 0000 0000 0000 0000 0000 X =± ∞

Các bit của e bằng 1, còn m có ít nhất một bit bằng 1, thìnó không biểu diễn cho số nào cả (NaN - not a number)

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 21

18 March 2007 Bài giảng Kiến trúc Máy tính 81

NKK-HUT

Dải giá trị biểu diễn

2-127 đến 2+127

10-38 đến 10+38

18 March 2007 Bài giảng Kiến trúc Máy tính 82

NKK-HUT

Dạng 64-bit

S là bit dấue (11 bit): mã excess-1023 của phần mũ E E = e – 1023 m (52 bit): phần lẻ của phần định trị MGiá trị số thực:

X = (-1)S*1.m * 2e-1023

Dải giá trị biểu diễn: 10-308 đến 10+308

18 March 2007 Bài giảng Kiến trúc Máy tính 83

NKK-HUT

Dạng 80-bit

S là bit dấue (15 bit): mã excess-16383 của phần mũ E E = e – 16383 m (64 bit): phần lẻ của phần định trị MGiá trị số thực:

X = (-1)S*1.m * 2e-16383

Dải giá trị biểu diễn: 10-4932 đến 10+4932

18 March 2007 Bài giảng Kiến trúc Máy tính 84

NKK-HUT

3.Thực hiện phép toán số dấu phẩy động

X1 = M1 * RE1

X2 = M2 * RE2

Ta cóX1 * X2 = (M1* M2) * RE1+E2

X1 / X2 = (M1 / M2) * RE1-E2

X1 ± X2 = (M1*RE1-E2 ± M2) * RE2 , với E2 ≥ E1

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 22

18 March 2007 Bài giảng Kiến trúc Máy tính 85

NKK-HUT

Các khả năng tràn sốTràn trên số mũ (Exponent Overflow): mũ dương vượt ra khỏi giá trị cực đại của số mũ dương có thể. ( ∞)Tràn dưới số mũ (Exponent Underflow): mũ âm vượt ra khỏi giá trị cực đại của số mũ âm có thể( 0). Tràn trên phần định trị (Mantissa Overflow): cộng hai phần định trị có cùng dấu, kết quả bịnhớ ra ngoài bit cao nhất.Tràn dưới phần định trị (Mantissa Underflow): Khi hiệu chỉnh phần định trị, các số bị mất ở bên phải phần định trị.

18 March 2007 Bài giảng Kiến trúc Máy tính 86

NKK-HUT

Phép cộng và phép trừ

Kiểm tra các số hạng có bằng 0 hay khôngHiệu chỉnh phần định trịCộng hoặc trừ phần định trịChuẩn hoá kết quả

18 March 2007 Bài giảng Kiến trúc Máy tính 87

NKK-HUT

Thuật toán cộng/trừ số dấu phẩy động

18 March 2007 Bài giảng Kiến trúc Máy tính 88

NKK-HUT

Thuật toán nhân số dấu phẩy động

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 23

18 March 2007 Bài giảng Kiến trúc Máy tính 89

NKK-HUT

Thuật toán chia số dấu phẩy động

18 March 2007 Bài giảng Kiến trúc Máy tính 90

NKK-HUT

3.6. Biểu diễn ký tự

Bộ mã ASCII (American Standard Code for Information Interchange)Bộ mã Unicode

18 March 2007 Bài giảng Kiến trúc Máy tính 91

NKK-HUT

1. Bộ mã ASCII

Do ANSI (American National Standard Institute) thiết kếBộ mã 8-bit có thể mã hóa được 28

ký tự, có mã từ: 0016 ÷ FF16 , trong đó:128 ký tự chuẩn có mã từ 0016 ÷ 7F16

128 ký tự mở rộng có mã từ 8016 ÷ FF16

18 March 2007 Bài giảng Kiến trúc Máy tính 92

NKK-HUT

Các ký tự chuẩn

Các ký tự hiển thị chuẩn:Các chữ cái LatinCác chữ số thập phâncác dấu câu: . , : ; ...các dấu phép toán: + - * / % ...một số ký hiệu thông dụng: &, $,@, #dấu cách

Các mã điều khiểnCác mã điều khiển định dạng văn bảnCác mã điều khiển truyền số liệuCác mã điều khiển phân tách thông tinCác mã điều khiển khác

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 24

18 March 2007 Bài giảng Kiến trúc Máy tính 93

NKK-HUT

<DEL>127

o111

-95

O79

?63

/47

<US>31

<SI>15F

~126

n110

^94

N78

>62

.46

<RS>30

<SO>14E

}125

m109

]93

M77

=61

-45

<GS>29

<CR>13D

|124

l108

\92

L76

<60

,44

<FS>28

<FF>12C

{123

k107

[91

K75

;59

+43

<ESC>27

<VT>11B

z122

j106

Z90

J74

:58

*42

<SUB>26

<LF>10A

y121

i105

Y89

I73

957

)41

<EM>25

<HT>99

x120

h104

X88

H72

856

(40

<CAN>24

<BS>88

w119

g103

W87

G71

755

'39

<ETB>23

<BEL>77

v118

f102

V86

F70

654

&38

<SYN>22

<ACK>66

u117

e101

U85

E69

553

%37

<NAK>21

<ENQ>55

t116

d100

T84

D68

452

$36

<DC4>20

<EOT>44

s115

c99

S83

C67

351

#35

<DC3>19

<ETX>33

r114

b98

R82

B66

250

"34

<DC2>18

<STX>22

q113

a97

Q81

A65

149

!33

<DC1>17

<SOH>11

p112

`96

P80

@64

048

<space>32

<DLE>16

<NUL>00

76543210HEXA

18 March 2007 Bài giảng Kiến trúc Máy tính 94

NKK-HUT

Các ký tự hiển thị chuẩn

26 chữ cái hoa ‘A’ đến ‘ Z’ có mã từ 41(16) đến 5A(16) (65 đến 90):

'A' 0100 0001 = 41(16)'B' 0100 0010 = 42(16)'C' 0100 0011 = 43(16). . . 'Z' 0101 1010 = 5A(16)

26 chữ cái thường ‘a’ đến ‘z’ có mã từ 61(16) đến 7A(16) (97 đến 122):

'a' 0110 0001 = 61(16)'b' 0110 0010 = 62(16)'c' 0110 0011 = 63(16). . . 'z' 0111 1010 = 7A(16)

18 March 2007 Bài giảng Kiến trúc Máy tính 95

NKK-HUT

Các ký tự hiển thị chuẩn (tiếp)

10 chữ số thập phân từ ‘0’ đến ‘9’ cómã từ 30(16) đến 39(16) (48 đến 57):

'0' 0011 0000 = 30(16)

'1' 0011 0001 = 31(16)

‘2' 0011 0010 = 32(16)

. . . '9' 0011 1001 = 39(16)

18 March 2007 Bài giảng Kiến trúc Máy tính 96

NKK-HUT

Các ký tự hiển thị chuẩn (tiếp)

Các ký hiệu khác:các dấu câu: . , : ; ...các dấu phép toán: + - * / % ...một số ký hiệu thông dụng: &, $,@, #dấu cách

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 25

18 March 2007 Bài giảng Kiến trúc Máy tính 97

NKK-HUT

Các mã điều khiển: có mã 0016 ÷ 1F16 và 7F16

Carriage Return – Về đầu dòng: Ký tự điều khiển con trỏ di chuyển về đầu dòng hiện hành.

CR

Form Feed - Đẩy sang đầu trang: Ký tự điều khiển con trỏ di chuyển xuống đầu trang tiếp theo.

FF

Vertical Tab – Tab đứng: Ký tự điều khiển con trỏ chuyển qua một số dòng đã định trước.

VT

Line Feed – Xuống một dòng: Ký tự điều khiển con trỏ chuyển xuống dòng dưới.

LF

Horizontal Tab - Tab ngang: Ký tự điều khiển con trỏ dịch tiếp một khoảng đã định trước.

HT

Backspace – Lùi lại một vị trí: Ký tự điều khiển con trỏ lùi lại một vị trí.

BS

Các mã ký tự điều khiển định dạng (điều khiển màn hình, máy in …)

18 March 2007 Bài giảng Kiến trúc Máy tính 98

NKK-HUT

Các mã điều khiển (tiếp)

End of Transmission Block – Kết thúc khối truyền: Chỉ ra kết thúc khối dữ liệu được truyền.

ETB

Synchronous / Idle - Đồng bộ hoá: Được sử dụng bởi hệ thống truyền đồng bộ để đồng bộ hoá quá trình truyền dữ liệu.

SYN

Negative Aknowledge - Báo phủ nhận: Ký tự được phát ra từ phía thu báo cho phía phát biết rằng việc nhận dữ liệu không thành công.

NAK

Acknowledge - Báo nhận: Ký tự được phát ra từ phía thu báo cho phía phát biết rằng dữ liệu đã được nhận thành công.

ACK

Enquiry – Hỏi: Tín hiệu yêu cầu đáp ứng từ một máy ở xa. ENQ

End of Transmission - Kết thúc truyền: Chỉ ra cho bên thu biết kết thúc truyền.

EOT

End of Text – Kết thúc văn bản: Ký tự đánh dấu kết thúc khối dữ liệu văn bản đã được bắt đầu bằng STX.

ETX

Start of Text - Bắt đầu văn bản: Ký tự đánh dấu bắt đầu khối dữ liệu văn bản và cũng chính là để kết thúc phần thông tin tiêu đề.

STX

Start of Heading - Bắt đầu tiêu đề: Ký tự đánh dấu bắt đầu phần thông tin tiêu đề.

SOHCác mã ký tự điều khiển truyền tin

18 March 2007 Bài giảng Kiến trúc Máy tính 99

NKK-HUT

Các mã điều khiển (tiếp)

Unit Separator - Ký hiệu phân cách đơn vị: Đánh dấu ranh giới giữa các phần của bản ghi.

US

Record Separator - Ký hiệu phân cách bản ghi: Đánh dấu ranh giới giữa các bản ghi.

RS

Group Separator - Ký hiệu phân cách nhóm: Đánh dấu ranh giới giữa các nhóm tin (tập hợp các bản ghi).

GS

File Separator - Ký hiệu phân cách tập tin: Đánh dấu ranh giới giữa các tập tin.

FSCác mã ký tự điều khiển phân cách thông tin

18 March 2007 Bài giảng Kiến trúc Máy tính 100

NKK-HUT

Các mã điều khiển (tiếp)

Delete – Xoá: Dùng để xoá các ký tự không mong muốn.DEL

Escape – Thoát: Ký tự được dùng để cung cấp các mã mở rộng bằng cách kết hợp với ký tự sau đó.

ESC

Substitute – Thay thế: Được thay thế cho ký tự nào được xác định là bị lỗi.SUB

End of Medium – Kết thúc phương tiện: Chỉ ra ký tự ngay trước nó là ký tự cuối cùng có tác dụng với phương tiện vật lý.

EM

Cancel – Huỷ bỏ: Chỉ ra rằng một số ký tự nằm trước nó cần phải bỏ qua.CAN

Device Control - Điều khiển thiết bị : Các ký tự dùng để điều khiển các thiết bị phụtrợ.

DC1÷DC4

Data Link Escape - Thoát liên kết dữ liệu: Ký tự sẽ thay đổi ý nghĩa của một hoặc nhiều ký tự liên tiếp sau đó.

DLE

Shift In – Dịch vào: Chỉ ra rằng các mã tiếp theo sẽ nằm trong tập ký tự chuẩn.SI

Shift Out – Dịch ra: Chỉ ra rằng các mã tiếp theo sẽ nằm ngoài tập ký tự chuẩn cho đến khi gặp ký tự SI.

SO

Bell - Chuông: Được sử dụng phát ra tiếng bíp khi cần gọi sự chú ý của con người.BEL

Null - Ký tự rỗng: Được sử dụng để điền khoảng trống khi không có dữ liệu.NULCác mã ký tự điều khiển khác

Bài giảng Kiến trúc máy tính 18 March 2007

Nguyễn Kim Khánh - ĐHBKHN 26

18 March 2007 Bài giảng Kiến trúc Máy tính 101

NKK-HUT

Các ký tự mở rộng

Các ký tự mở rộng được định nghĩa bởi:

nhà chế tạo máy tính người phát triển phần mềm.

Ví dụ:Bộ mã ký tự mở rộng của IBM IBM-PC.Bộ mã ký tự mở rộng của Apple Macintosh.Bộ mã tiếng Việt TCVN3.

18 March 2007 Bài giảng Kiến trúc Máy tính 102

NKK-HUT

2. Bộ mã hợp nhất: Unicode

Do các hãng máy tính hàng đầu thiết kếBộ mã 16-bitBộ mã đa ngôn ngữCó hỗ trợ các ký tự tiếng Việt

18 March 2007 Bài giảng Kiến trúc Máy tính 103

NKK-HUT

Hết chương 3