KIẾN TRÚC VÀ TỔ CHỨC MÁY TÍNH (Computer Organization and Architecture)

Chương 2 Biểu diễn thông tin trong máy tính

bangtqh@utc2.edu.vn

Nội dung

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

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

3. Các phép toán số học đối với số nguyên

4. Số dấu phẩy động

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 2

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

(cid:1) Hệ thập phân (Decimal System) → Con người sử

dụng.

(cid:1) Hệ nhị phân (Binary System) → Máy tính sử dụng

(cid:1) Hệ bát phân (Octal System) → Dùng để viết gọn số

nhị phân

(cid:1) Hệ thập lục phân (Hexadecimal System) → Dùng để

viết gọn số nhị phân

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 3

Hệ thập phân (Decimal System)

(cid:1) Cơ số 10

(cid:1) Dùng 10 ký số: 0, 1, 2, ..., 9

(cid:1) Dùng n chữ số thập phân có thể biểu diễn được 10n

giá trị khác nhau:

• 00...0 = 0

• 99...9 = 10n – 1

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 4

Hệ thập phân (tt)

(cid:1) Quy tắc đếm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 5

Ví dụ

215.37 = 2*102 + 1*101 + 5*100 + 3*10-1 + 7*10-2

(cid:1) Các chữ số phần nguyên: dư 5 215 : 10 = 21 dư 1 21 : 10 = 2 dư 2 2 : 10 = 0

(cid:1) Các chữ số phần thập phân:

0.37 * 10 = 3.7 0.7 * 10 = 7.0

phần nguyên = 3 phần nguyên = 7

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 6

Hệ nhị phân (Binary System)

(cid:1)Cơ số 2

(cid:1)Dùng 2 chữ số: 0, 1

(cid:1)Chữ số nhị phân gọi là bit (binary digit)

(cid:1)Bit là đơn vị thông tin nhỏ nhất

(cid:1)Dùng n chữ số nhị phân có thể biểu diễn được

2n giá trị khác nhau:

00...0 = 0

11...1 = 2n - 1

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 7

Hệ nhị phân (tt)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 8

Hệ nhị phân (tt) (cid:1) Quy tắc đếm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 9

Ví dụ

(cid:1) Có số nhị phân như sau: 1011 1001.101(2) (cid:1) Khi đó, giá trị của chúng được tính là:

1011 1001.101(2) =

= 27 + 25 + 24 + 23 + 20 + 2-1 + 2-3

= 128 + 32 + 16 + 8 + 1 + 0.5 + 0.125

= 185.625(10)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 10

Hệ Bát phân (Octal System)

(cid:1)Cơ số 8

(cid:1)Dùng 8 chữ số: 0, 1, 2, 3, 4, 5, 6, 7

(cid:1)Dùng n chữ số bát phân có thể biểu diễn được 8n

giá trị khác nhau:

• 00...0 = 0

• 77...7 = 8n – 1

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 11

Hệ bát phân (tt) (cid:1) Quy tắc đếm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 12

Hệ thập lục phân (Hexadecimal System)

(cid:1)Cơ số 16 (cid:1)Dùng 16 chữ số: 0,1,..., 9, A, B, ..., F (cid:1)Dù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

(cid:1)Dùng n chữ số Hexa có thể biểu diễn được

16n giá trị khác nhau:

• 00...0 = 0

• FF...F = 16n - 1

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 13

Hệ thập lục phân (tt)

(cid:1) Quy tắc đếm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 14

Tổng quát

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 15

Chuyển đổi giữa các hệ đếm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 16

Bảng mã 8421

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 17

Chuyển đổi tổng quát

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 18

Phương pháp ghép nhóm

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 19

Chuyển đổi số thập phân → nhị phân

(cid:1) Chuyển đổi phần nguyên:

– Cách 1: Chia liên tiếp cho 2 rồi lấy phần dư – Cách 2: Phân tích thành tổng các luỹ thừa của 2

(cid:1) Chuyển đổi phần thập phân:

– Nhân phần thập phân với 2, lấy phần nguyên

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 20

Ví dụ chuyển đổi

(cid:1)Có số ở hệ thập phân như sau: 61.3125

– Chuyển đổi phần nguyên: 61(10) = 111101(2)

– Chuyển đổi phần thập phân:

• 0.3125 * 2 = 0.625 • 0.625 * 2 = 1.25 • 0.25 * 2 = 0.5 • 0.5 * 2 = 1.0

phần nguyên = 0 phần nguyên = 1 phần nguyên = 0 phần nguyên = 1

– Vậy: 61.3125(10) = 111101.0101(2)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 21

Mã hoá dữ liệu trong máy tính

(cid:1) Nguyê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

(cid:1) 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ự

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 22

Mã hoá dữ liệu trong máy tính (tt)

(cid:1) Mã hoá và tái tạo tín hiệu tự nhiên

TH Ltục

TH V.lý

TH số

ADC

Bộ tạo tín hiệu

MT

TH V.lý

TH Ltục

TH số

DAC

Bộ tái tạo tín hiệu

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 23

Mã hoá dữ liệu trong máy tính (tt)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 24

Mã hoá dữ liệu trong máy tính (tt)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 25

Lưu trữ dữ liệu trong máy tính

(cid:1)Bộ nhớ chính được tổ chức theo byte

(cid:1)Độ dài dữ liệu có thể chiếm 1 hay nhiều byte

(cid:1)Có 2 cách lưu trữ các byte trong bộ nhớ chính:

– Little-endian (đầu nhỏ): byte có ý nghĩa thấp

hơn được lưu trữ ở vị trí có địa chỉ nhỏ hơn

– Big-endian (đầu to): byte có ý nghĩa thấp hơn

được lưu trữ ở vị trí có địa chỉ lớn hơn

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 26

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

12

34

56

78

Địa chỉ

Địa chỉ

. . .

. . .

X

X

78

12

X +1

X +1

56

34

X + 2

X + 2

34

56

X + 3

X + 3

12

78

. . .

. . .

đầu nhỏ

đầu to

đầu nhỏ đầu to

Ví dụ: Intel 80x86, Px: Motorola 680x0: Power PC, Itanium: cả hai loại

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 27

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

(cid:1) Số nguyên không dấu (unsigned integer)

(cid:1) Số nguyên có dấu (signed integer)

(cid:1) Chuyển đổi độ dài

(cid:1) Bài tập

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 28

Số nguyên không dấu

(cid:1)Nguyên tắc chung

– Dùng n chữ số nhị phân thì biểu diễn được 2n số

– Dải biểu diễn: 0 ÷ 2n – 1

– Ví dụ:

• n = 8 bit: Dải biểu diễn: 0 ÷ 28 -1, hay 0 ÷ 255

• n = 16 bit: Dải biểu diễn: 0 ÷ 216 - 1, hay 0 ÷ 65535

• n = 32 bit: Dải biểu diễn: 0 ÷ 232 – 1, 0÷4294967295

(cid:1)Cách biểu diễn

– Biểu diễn ở dạng nhị phân một cách bình thường

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 29

Hiện tượng tràn số

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 30

Các ví dụ

(cid:1) Ví dụ 1: biểu diễn các số nguyên không dấu sau đây

dùng 8 bit:

A = 73;

B = 138

(cid:1) Giải:

– A = 73 = 64 + 8 + 1 = 26 + 23 + 20

73 = 0100 1001

– B = 138 = 128 + 8 + 2 = 27 + 23 + 21

138 = 1000 1010

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 31

Các ví dụ (tt)

(cid:1) 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

(cid:1) Giải:

– C = 0010 1010 = 25 + 23 + 21 = 32 + 8 + 2 = 42

– D = 1010 0110 = 27 + 25 + 22 + 21 =

= 128 + 32 + 4 + 2 = 166

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 32

Số nguyên có dấu (cid:1) Nguyên tắc chung

– Dù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 – 1

– Ví dụ:

• n = 8 bit: Dải biểu diễn: - 27 ÷ 27 -1, hay -128 ÷ 127

• n = 16 bit: - 215 ÷ 215 - 1, hay - 32768 ÷ 32767

• n = 32 bit: - 231 ÷ 231 - 1, hay - 2147483648 ÷ 2147483647

(cid:1) Cách biểu diễn:

– PP1: Dùng dấu và độ lớn (Sign-Magnitude)

– PP2: Dùng mã bù 2 (Two’s complement)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 33

Dùng dấu và độ lớn

(cid:1)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

(cid:1)Các bit còn lại biểu diễn giá trị

– Ví dụ:

+23 = 0001 0111; -23 = 1001 0111

(cid:1)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)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 34

Dùng mã bù 2

(cid:1)Đối với số dương: biểu diễn dạng nhị phân (cid:1)Đố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

(cid:1)Đặ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

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 35

Dùng mã bù 2 (tt)

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

A = an-1an-2….a2a1a0

(cid:1) Giá trị của A được tính bởi công thức:

(cid:1) Dải giá trị của số nguyên sử dụng n bit:

-2n-1 ÷ 2n-1 – 1

- 8 bit: - 16 bit: - 32 bit:

-128 ÷ 127 -32 768 ÷ 32 767 -2 147 483 648 ÷ 2 147 483 647

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 36

Các ví dụ

(cid:1) Ví dụ 1: Biểu diễn các số nguyên có dấu sau đây

bằng 8 bit: A = + 69; B = - 92

(cid:1) Giải:

A = + 69 = 0100 0101 B = - 92 Ta có: + 92 = 0101 1100

+

Số bù 1 = 1010 0011 1 Số bù 2 = 1010 0100

Vậy: B = -92 = 1010 0100

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 37

Các ví dụ

(cid:1) 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

(cid:1) Giải:

C = 0110 1010 = + (64 + 32 + 8 + 2) = 106 D = 1100 0011 = - (64 + 2 + 1) = - 67

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 38

Các ví dụ

(cid:1) 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):

E = 0101 1110;

F = 1101 1010

(cid:1) Giải:

E = 0101 1110 = 64 + 16 + 8 + 4 + 2 = 94

F = 1101 1010 = -128 + 64 + 16 + 8 + 2 = -38

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 39

Chuyển đổi độ dài (byte(cid:2)word) (cid:1) Đối với số dương: thêm/bớt số 0 ở trước:

0001 0111 +23 = +23 = 0000 0000 0001 0111

(8 bit) (16 bit)

(cid:1) Đối với số âm: thêm/bớt số 1 ở trước

1110 1001 -23 = -23 = 1111 1111 1110 1001

(8 bit) (16 bit)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 40

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

(cid:1) BCD – Binary Coded Decimal

– Được dùng để tính toán số thập phân trong hệ nhị

phân

– Là số viết theo hệ cơ số 16 nhưng tính theo hệ cơ số

10

(cid:2) trong hệ nhị phân là 0001 0010 (cid:2) có giá trị là

• 12BCD

12 chứ không phải giá trị 18 (1216 = 18)

• Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0…9

(xem lại bảng mã 8421 phần các số từ 0-9)

• Có 6 tổ hợp bit không sử dụng:

1010; 1011; 1100; 1101; 1110; 1111

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 41

Các kiểu lưu trữ số BCD (cid:1) BCD không gói (unpacked BCD)

– Mỗi số BCD-4bit được lưu trữ trong 4 bit thấp của byte – Ví dụ: Số 35 được lưu trong 2 byte

0 0 1 1

0 1 0 1

(cid:1) BCD gói (packed BCD)

– Hai số BCD-4bit được lưu chung trong 1 byte – Ví dụ: Số 35 được lưu trong 1 byte

0 0 1 1 0 1 0 1

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 42

2.3. Các phép toán trên số nguyên

(cid:1) Phép cộng: thực hiện như cách tính tay thông

thường nhưng ở hệ nhị phân Cộng Kết quả

Nhớ

0 + 0

0

0

0 + 1

1

0

1 + 0

1

0

1 + 1

1

0 (cid:1) Phép trừ: Thực hiện bằng cách cộng số bị trừ với bù

2 của số trừ – Ví dụ: A=1001, B=0011 có bù hai là 1101 – Vậy A-B = 1001+1101 = (1)0110 . Số (1) là số nhớ

(carry)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 43

Bài tập

1. Số nhị phân 8 bit (11001100), số này tương ứng với số nguyên thập phân có dấu là bao nhiêu nếu số trên được biểu diễn ở dạng:

- Số bù 1. - Số bù 2.

ra số thập phân. ra số nhị phân 16 bits. ra số nhị phân.

2. Đổi các số sau đây: a. (011011)2 b. (-2005)10 c. (55.875)10

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 44

2.3. Các phép toán trên số nguyên (tt)

(cid:1) Phép nhân số không dấu: – Giải thuật nhân số n bit a) Đặt bộ đếm tới n b) Xoá thanh ghi 2n bit chứa tích thành phần; Nhớ ← 0 c) Kiểm tra bit LSB của số nhân; nếu là 1 thì cộng số bị nhân vào n bit nhiều ý nghĩa nhất của tích thành phần

d) Dịch phải Nhớ, Tích thành phần, Số nhân đi 1 bit e) Giảm bộ đếm đi 1. Lặp lại các bước từ c cho đến khi bộ đếm bằng không. Đọc kết quả từ thanh ghi tích thành phần

(cid:1) Ví dụ: 10 x 13

– Số bị nhân: 10(10) = 1010 (2) – Số nhân: 13(10) = 1101(2)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 45

Giải thuật nhân số không dấu

Start

C:=0; A:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n

§óng

Q0 = 1?

Sai

C,A:=A+M

DÞch ph¶i C, A, Q Dec(Bé ®Õm)

Sai

§óng

Bé ®Õm = 0?

End

TÝch chøa trong A,Q

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 46

Sơ đồ mạch nhân

Sè bÞ nh©n Mn-1 . . . M0

Céng

Bé céng n bit

Logic ®iÒu khiÓn dÞch vµ céng

DÞch ph¶i

C

An-1 . . . A0

Qn-1 . . . Q0 Sè nh©n

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 47

Ví dụ: 13 x 10

Bước

B.đếm Số nhân Nhớ

Tích thành phần

Vòng lặp

Ghi chú

(a) và (b)

4

1101

0

0000 0000

Khởi trị,LSB=1

(c)

4

1101

0

1010 0000

Cộng 1010

1

0

0101 0000

Dịch phải

1

(d)

4

0110

3

0110

0

0101 0000

Giảm n

1

(e)

(c)

3

0110

0

0101 0000

LSB=0

2

0

0010 1000

Dịch phải

2

(d)

3

0011

(e)

2

0011

0

0010 1000

Giảm n, LSB=1

2

1100 1000

Cộng 1010

3

(c)

2

0011

0

(d)

2

0001

0

0110 0100

Dịch phải

3

0

0110 0100

Giảm n, LSB=1

3

(e)

1

0001

(c)

1

0001

1

0000 0100

Cộng 1010

4

1000 0010

Dịch phải

4

(d)

1

0000

0

(e)

0

0000

0

1000 0010

Giảm n. Dừng

4

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 48

2.3. Các phép toán trên số nguyên (tt)

(cid:1) Phép nhân số có dấu:

– Giải pháp 1:

• Chuyển đổi thành số dương nếu cần • Thực hiện phép nhân như đối với số không dấu • Kiểm tra bit dấu của 2 số, nếu chúng trái dấu thì tích là

số âm.

– Giải pháp 2: sử dụng thuật toán Booth kinh điển (có thể áp dụng cho 2 số dương, một số âm và một dương hoặc cả 2 số đều âm).

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 49

Giải thuật Booth

Start

A:=0; Q-1:=0; Bé ®Õm:=n M chøa sè bÞ nh©n Q chøa sè nh©n

= 01

= 10

Q0, Q-1

A := A - M

A := A + M

= 11 = 00

DÞch ph¶i A, Q, Q-1 Dec(Bé ®Õm)

L−u ý: An-1 ®−îc t¸i t¹o

§óng

Sai

Bé ®Õm = 0?

End

TÝch chøa trong A,Q

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 50

Ví dụ 1: -7 x 3 = -21

A 0000

Q(SN) 0011

Q-1 0

M(SBN) 1001

Khởi tạo Count = 4

Lần 1, Count = 3

0111 0011

0011 1001

1001 1001

0 1

A ← A - M SHR A, Q, Q-1

Lần 2, Count = 2

0001

1100

1001

1

SHR A, Q, Q-1

Lần 3, Count = 1

1010 1101

1100 0110

1001 1001

1 0

A ← A + M SHR A, Q, Q-1

Lần 4, Count = 0

1110

1011

1001

0

SHR A, Q, Q-1

Kết quả: 1110 1011 (dạng bù 2 của 21)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 51

Ví dụ 2: -5 x -6 = +30

A 0000

Q(SN) 1010

Q-1 0

M(SBN) 1011

Khởi tạo Count = 4

1011

0

0000

0101

SHR A, Q, Q-1

Lần 1, Count = 3

Lần 2, Count = 2

0101 0010

1011 1011

0101 1010

0 1

A ← A - M SHR A, Q, Q-1

Lần 3, Count = 1

1011 1011

1101 1110

1010 1101

1 0

A ← A + M SHR A, Q, Q-1

Lần 4, Count = 0

1011 1011

0011 0001

1101 1110

0 1

A ← A - M SHR A, Q, Q-1

Kết quả: 0001 1110

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 52

Ví dụ 3: 7 x 3 = 21

A 0000

Q(SN) 0011

Q-1 0

M(SBN) 0111

Khởi tạo Count = 4

Lần 1, Count = 3

1001 1100

0011 1001

0111 0111

0 1

A ← A - M SHR A, Q, Q-1

1110

0100

0111

1

Lần 2, Count = 2

SHR A, Q, Q-1

Lần 3, Count = 1

0111 0111

1 0

0101 0010

0100 1010

A ← A + M SHR A, Q, Q-1

0001

0101

0111

0

SHR A, Q, Q-1

Lần 4, Count = 0

Kết quả: 0001 0101

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 53

2.3. Các phép toán trên số nguyên (tt)

(cid:1) Phép chia số nhị phân

1. Nạp số chia vào thanh ghi M và số bị chia vào các thanh ghi A, Q. Số bị chia phải ở dạng 2n bit, vì vậy, ví dụ số 4 bit 0111 trở thành 00000111 và 1001 trở thành 11111001 2. Dịch trái A, Q đi 1 bit 3. Nếu M và A có cùng dấu, thực hiện gán A←A-M, ngược

4.

lại gán A ← A+M thao tác trên thành công nếu dấu của A là như nhau trước và sau thao tác a. Nếu thao tác thành công hoặc (A=0 và Q=0) thì đặt Q0 ← 1 b. Nếu thao tác không thành công và (A≠0 hoặc Q ≠ 0) thì đặt Q0 ← 0 và khôi phục giá trị trước đó của A

5. Lặp lại bước 2 đến bước 4 số lần lặp bằng số bit của Q 6. Phần dư là A. Nếu dấu của số chia và số bị chia giống

nhau thì thương là Q, ngược lại thương là số bù 2 của Q.

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 54

Thuật toán chia số nhị phân

Start

Bé ®Õm := n M chøa sè chia (n bit) A,Q chøa sè bÞ chia (2n bit)

DÞch tr¸i A,Q ®i 1 bit B := A

§óng

Sai

M, A cïng dÊu?

A := A - M

A := A + M

§óng

Sai

A, B cïng dÊu hoÆc A = Q = 0?

Q0 = 1

Q0 = 0; A := B

Dec(Bé ®Õm)

§óng

Sai

Bé ®Õm = 0?

End

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 55

Ví dụ 1: 12 : 4 = 3, dư 0

A

Q

M = 0100 (sè chia)

0000

1100

Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)

0001

1000

1101

0001

1000

0011

0000

1110

0011

0000

0110

0000

0010

0010

0001

0100

0010

0000

0000

0011

DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A cïng dÊu sau khi trõ → Q0 = 1 DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A – M A cïng dÊu sau khi trõ → Q0 = 1. A chøa d, Q chøa th¬ng

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 56

Ví dụ 2: 13 : (-4) = -3, dư 1

Q

M = 1100 (sè chia)

A

0000

1101

Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)

0001

1010

1101

0001

1010

0011

0100

1111

0011

0100

0110

1000

0010

0010

1001

0101

0010

0001

0001

0011

DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 57

Ví dụ 3: (-11) : 3 = (-3), dư (-2)

Q

M = 0011 (sè chia)

A

1111

0101

Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia kh¸c dÊu)

1110

1010

0001

1110

1010

1101

0100

0000

1101

0100

1010

1000

1101

1101

1001

1011

0010

1110

1110

0011

DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A kh¸c dÊu sau khi céng → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M kh¸c dÊu A → A := A + M A cïng dÊu sau khi céng → Q0=1. A chøa d, Q chøa bï 2 cña th¬ng

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 58

Ví dụ 4: (-14) : (-6) = 2, dư (-2)

A

Q

M = 1010 (sè chia)

1111

0010

Khëi t¹o gi¸ trÞ (sè chia vµ bÞ chia cïng dÊu)

1110

0100

0100

1110

0100

1100

1000

0000

1100

1000

1001

0000

1111

1111

0001

1110

0010

0100

1110

0010

DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi trõ → Q0 = 0 vµ phôc håi A DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A + M A cïng dÊu sau khi céng → Q0 = 1 DÞch tr¸i 1 bit A, Q M cïng dÊu A → A := A - M A kh¸c dÊu sau khi céng → Q0= 0. A chøa d, Q chøa cña th¬ng

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 59

2.4. Số dấu phẩy động

(cid:1) Số dấu phẩy động (floating point) dùng để tính

toán trên số thực – Một số thực X được biểu diễn theo kiểu dấu phẩy động

như sau:

(cid:1) = ± (cid:5) ∗ (cid:7)±(cid:8)

– Với:

• m là phần định trị (mantissa) • B là cơ số (base) • e là phần mũ (exponent)

– Mantissa quyết định độ chính xác – Exponent quyết định độ lớn/nhỏ của số

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 60

2.4. Số dấu phẩy động (tt) (cid:1) Một số có nhiều dạng biểu diễn

– Khó xử lý – Cần có sự chuẩn hóa

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 61

Chuẩn IEEE 754/85

(cid:1) Số dấu phẩy động chính xác đơn (single precision)

– Sử dụng 32 bit, độ lệch mũ (bias) = 127 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:16)(cid:17)

(cid:1) Số dấu phẩy động chính xác kép (double precision)

– Sử dụng 64 bit, độ lệch mũ (bias) = 1023 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:18)(cid:16)(cid:19)

(cid:1) Số dấu phẩy động chính xác kép mở rộng (double-

extended precision) – Sử dụng 80 bit, độ lệch mũ (bias) = 16383 – Công thức tính giá trị: −1(cid:11) ∗ 1. (cid:5) ∗ 2(cid:8)(cid:14)(cid:15)(cid:20)(cid:19)(cid:21)(cid:19)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 62

Chuẩn IEEE 754/85 (32 bit)

31 30 23 22 0

S (dÊu)

E (phÇn mò)

M (phÇn ®Þnh trÞ)

1 bit

8 bit

23 bit

(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:

X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:16)(cid:17)

(cid:1)Dải giá trị biểu diễn:

2-127 < X < 2127, hay: 10-38 < X < 1038

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 63

Chuyển đổi → IEEE 754/85 (32 bit)

(cid:1)Bước 1: Đổi số thực đó → nhị phân

(cid:1)Bước 2: Chuyển về dạng: ±1,aa...a * 2b

(cid:1)Bước 3: Xác định các giá trị:

S = 0 nếu số dương; S = 1 nếu số âm E – 127 = b ⇒ E = 127 + b → nhị phân M = aa...a00...0

23 bit

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 64

(±1.aa...a * 2b)

Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 1: 17.625 → IEEE 754/85 – Bước 1: A = 17.625 = 10001.101 – Bước 2: A = 1.0001101 * 24 – Bước 3:

• 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

(±1,aa...a * 2b)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 65

Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 2: -112.3125 → IEEE 754/85 – Bước 1: B = -112.3125 = -1110000.0101 – Bước 2: B = -1,1100000101 * 26 – Bước 3:

• S = 1, do 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

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 66

Chuyển đổi → IEEE 754/85 (32 bit) (cid:1)Ví dụ 3: -19 / 64 → IEEE 754/85 – B1: C = -19 / 64 = -19 * (1 / 64) – B2: C = -10011 * 2-6 = -1.0011 * 2-2 – B3: Ta có:

• S = 1, vì C < 0 • E – 127 = -2 ⇒ E = 125 = 0111 1100 • M = 001 1000 0000 0000 0000 0000

⇒ A = 1011 1110 0001 1000 0000 0000 0000 0000

= BE 18 00 00H

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 67

Chuyển đổi → IEEE 754/85 (32 bit)

(cid:1)Ví dụ 4: Tìm giá trị số thực: C2 0D 00 00H (cid:1)Giải

X = C2 0D 00 00H = = 1100 0010 0000 1101 0000 0000 0000 0000 – S = 1 ⇒ X < 0 – E = 1000 0100 = 132 ⇒ E -127 = 5 – M = 000 1101 0000 0000 0000 0000

⇒ X = -1.0001101 * 25 = -100011.01 = -35,25

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 68

Chuẩn IEEE 754/85 (64bit)

63 62 52 51 0

S (dÊu)

E (phÇn mò)

M (phÇn ®Þnh trÞ)

1 bit

11 bit

52 bit

(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:

X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:18)(cid:16)(cid:19)

(cid:1)Dải giá trị biểu diễn:

2-1023 < X < 21023 hay: 10-308 < X < 10308

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 69

Chuẩn IEEE 754/85 (64bit)

79 78 64 63 0

S (dÊu)

E (phÇn mò)

M (phÇn ®Þnh trÞ)

1 bit

15 bit

64 bit

(cid:1)Khi đó, 1 số thực bất kỳ được biểu diễn:

X = −1(cid:11) ∗ 1. (cid:22) ∗ 2(cid:8)(cid:14)(cid:15)(cid:20) (cid:19)(cid:21)(cid:19)

(cid:1)Dải giá trị biểu diễn:

2-16 383 < X < 216 383 hay: 10-4 932 < X < 104 932

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 70

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

(cid:1) E = 0, M = 0 → X = 0

x000 0000 0000 0000 0000 0000 0000 0000 = ±0

(cid:1) E = 11...1, M = 0 → X = ±∞

x111 1111 1000 0000 0000 0000 0000 0000 = ±∞

(cid:1) E = 11...1, M ≠ 0 → X: NaN (Not a Number)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 71

Biểu diễn ký tự (cid:1) Bộ mã ASCII

(American Standard Code for

Information Interchange)

(cid:1) Bộ mã Unicode

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 72

Bộ mã ASCII

(cid:1)Do ANSI (American National Standard Institute)

thiết kế

(cid:1)Là bộ mã 8 bit, có thể mã hóa được 28 ký tự, có

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

• Các ký tự điều khiển: màn hình, máy tin, truyền tin. • Các ký tự soạn thảo văn bản

– 128 ký tự mở rộng, có mã 8016 ÷ FF16, gồm: – Các ký tự đặc biệt, kẻ khung, tiếng Pháp, ...

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 73

Bộ mã Unicode

(cid:1) Là bộ mã hợp nhất, do các hãng máy tính hàng đầu

thiết kế

(cid:1) Là bộ mã 16 bit

(cid:1) Là bộ mã đa ngôn ngữ

(cid:1) Có hỗ trợ các ký tự tiếng Việt

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 74

bangtqh@utc2.edu.vn

Bài tập (các hệ đếm)

(cid:1) Bài 1: Đổi các số sau từ hệ thập phân → hệ nhị phân:

a) 28; d) 34,5;

b) 89; e) 55,25;

c) 294 f) 46,3125

(cid:1) Bài 2: Đổi các số sau từ hệ nhị phân → hệ thập phân:

a) 11001; c) 10111011;

b) 111001 d) 10001001

(cid:1) Bài 3: Đổi các số sau từ hệ thập phân → hệ thập lục:

a) 68;

b) 29;

c) 215

(cid:1) Bài 4: Đổi các số sau từ hệ thập lục → hệ thập phân:

a) AF;

b) 123;

c) 10D

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 76

Bài tập (biểu diễn số nguyên)

(cid:1) Bài 1: Biểu diễn các số sau dùng dấu và độ lớn (8

bit):

a) +69;

b) +105;

c) -28;

d) -121

(cid:1) Bài 2: Biểu diễn các số sau dùng dấu và độ lớn (16

bit):

a) +109;

b) +105;

c) -98;

d) -131

(cid:1) Bài 3: Biểu diễn các số sau dùng mã bù 2 (8 bit –

b) 48;

c) 98;

d) 131

không dấu): a) 57;

(cid:1) Bài 4: Biểu diễn các số sau dùng mã bù 2 (8 bit – có

dấu):

a) +57;

b) +48;

c) -98;

d) -31

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 77

Bài tập (biểu diễn số nguyên)

(cid:1) Bài 5: Biểu diễn các số sau dùng mã bù 2 (16 bit –

không dấu): a) 157;

b) 108;

c) 128;

d) 35

(cid:1) Bài 6: Biểu diễn các số sau dùng mã bù 2 (16 bit –

có dấu): a) 137;

b) 119;

c) -113;

d) -53

(cid:1) Bài 7: Có các biểu diễn sau (dùng dấu và độ lớn), hãy

xác định giá trị của chúng:

a) 0100 1011

b) 1001 1100

c) 0000 0000 1001 0010;

d) 1000 0000 0110 1100

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 78

Bài tập (biểu diễn số nguyên)

(cid:1) Bài 8: Có các biểu diễn sau (dùng mã bù 2 – không

dấu), hãy xác định giá trị: a) 0100 001 c) 0000 0000 1001 0010;

b) 1010 0100 d) 1000 0000 0010 0100

(cid:1) Bài 9: Có các biểu diễn sau (dùng mã bù 2 – có dấu),

hãy xác định giá trị của chúng:

a) 0100 1011 b) 1101 1100 c) 0000 0000 0101 0011 d) 1111 1111 1110 1110

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 79

Bài tập (các phép toán với số nguyên)

(cid:1) Bài 1: Cho biết kết quả khi thực hiện trên máy tính

các phép cộng sau (8 bit) và giải thích: a) 56 + 78 (không dấu); c) 68 + 40 (có dấu); e) 102 + 88 (có dấu);

b) 121 + 40 (không dấu) d) 67 + (-100) (có dấu) f) (-80) + (-62) (có dấu)

(cid:1) Bài 2: Mô tả quá trình nhân trên máy tính các số 4 bit

b) 6 * 14; e) 6 * (-2);

c) 15 * 14 f) (-7) * (-4)

sau đây: a) 13 * 7; d) (-5) * 3;

(cid:1) Bài 3: Mô tả quá trình chia trên máy tính các số sau

đây: a) 13 : 5; c) (-11) : 6;

b) 10 : (-4) d) (-14) : (-5)

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 80

Bài tập (biểu diễn số thực)

(cid:1) Bài 1: Biểu diễn các số sau theo chuẩn IEEE 754/85

c) 50,3125

32 bit: a) 78,25; d) -133/128

b) -23,625; e) 20,15

(cid:1) Bài 2: Có các biểu diễn theo chuẩn IEEE 754/85 sau,

xác định giá trị của chúng: a) 41 8D 00 00H; c) 3E A0 00 00H;

b) C2 96 20 00H d) BC 91 00 00H

(cid:1) Bài 3: Có các biểu diễn theo chuẩn IEEE 754/85 sau,

xác định giá trị của chúng:

a) 10 00 00 00H; c) FF 80 00 00H;

b) 7F 80 00 00H d) 7F 80 00 10H

bangtqh@utc2.edu.vn Chương 2 - Biểu diễn thông tin trong máy tính 81