Chương 3: Biểu diễn dữ liệu và số học máy tính

Nội dung chương 3

Chương 3
BIỂU DIỄN DỮ LIỆU VÀ
SỐ HỌC MÁY TÍNH

3.1. Các hệ đếm cơ bản
3.2. Mã hoá và lưu trữ dữ liệu trong máy tính
3.3. Biểu diễn số nguyên
3.4. Thực hiện các phép toán số học với số nguyên

Phạm Quang Dũng
Bộ môn Khoa học máy tính - Khoa CNTT

3.5. Số dấu chấm động

Trường Đại học Nông nghiệp I – Hà Nội

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

website: www.hau1.edu.vn/it/pqdung
ĐT: (04) 8766318 DĐ: 0988.149.189

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

1. Hệ thập phân

†

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

†

Hệ nhị phân (Binary System)
Æ

†

Con người sử dụng

Dùng để viết gọn số nhị phân

Phạm Quang Dũng

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

†

Cơ số 10

†

10 chữ số: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

†

Dùng n chữ số thập phân có thể biểu diễn được
10n giá trị khác nhau:

Máy tính sử dụng

Hệ mười sáu (Hexadecimal System)
Æ

3.2

3.3

„

00...000 = 0

„

99...999 = 10n - 1

Phạm Quang Dũng

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

3.4

1

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

2. Hệ nhị phân

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

†

Cơ số 2

†

2 chữ số nhị phân: 0 và 1

†

†

Các chữ số của phần nguyên:
„

472 : 10 = 47 dư 2

†

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

„

47 : 10 = 4 dư 7

†

Bit là đơn vị thông tin nhỏ nhất

„

4 : 10 = 0 dư 4

†

Dùng n bit có thể biểu diễn được 2n giá trị khác
nhau:

Các chữ số của phần lẻ:
„

0.38 x 10 = 3.8 phần nguyên = 3

„

0.8 x 10 = 8.0 phần nguyên = 8

Phạm Quang Dũng

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

3.5

„

00...000 = 0

„

11...111 = 2n-1

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Ví dụ số nhị phân
1101001.1011(2)

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

6 5 4 3 2 1

A = anan-1...a1a0.a-1...a-m

-1 -2 -3 -4

2-3 +

2-4

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

A = an2n + an-12n-1 +...+ a020 + a-12-1 +...+ a-m2-m

= 105.6875(10)

n

∑a 2

i=− m

Phạm Quang Dũng

0

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

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

A=

3.6

i

i

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

3.7

Phạm Quang Dũng

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

3.8

2

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

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

†

Phạm Quang Dũng

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

3.9

Ví dụ: chuyển đổi 105(10)
„

105:2 =

52

1

„

52:2 =

26

0

„

26:2 =

13

0

„

13:2 =

6

1

„

6:2 =

3

0

„

3:2 =

1

1

„

1:2 =

0

1

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

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

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

„

†

†

105 = 64 + 32 + 8 + 1 = 26 + 25 + 23 + 20
27

26

25

24

23

22

21

20

128

64

32

16

8

4

2

1

0

1

1

0

1

0

0

1

Kết quả:

105(10) = 0110 1001(2)

Ví dụ 2: 17000(10) = 16384 + 512 + 64 + 32 + 8
=

214

+

†

3.10

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

0.6875 x 2 = 1.375

phần nguyên = 1

„

0.375

x 2 = 0.75

phần nguyên = 0

„

0.75

x 2 = 1.5

phần nguyên = 1

„

0.5

x 2 = 1.0

phần nguyên = 1

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

29 + 2 6 + 2 5 + 2 3

17000(10) = 0100 0010 0110 1000(2)
15 14 13 12 11 10 9 8

Phạm Quang Dũng

7 6

5 4

3 2

1 0

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

3.11

Phạm Quang Dũng

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

3.12

3

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

†

Ví dụ 2: chuyển đổi 0.81(10)

†

Ví dụ 3: chuyển đổi 0.2(10)

„

0.81 x 2 = 1.62 phần nguyên = 1

„

0.2

x2=

0.4

phần nguyên = 0

„

0.62 x 2 = 1.24 phần nguyên = 1

„

0.4

x2=

0.8

phần nguyên = 0

„

0.24 x 2 = 0.48 phần nguyên = 0

„

0.8

x2=

1.6

phần nguyên = 1

„

0.48 x 2 = 0.96 phần nguyên = 0

„

0.6

x2=

1.2

phần nguyên = 1

„

0.96 x 2 = 1.92 phần nguyên = 1

„

0.2

x2=

0.4

phần nguyên = 0

„

0.92 x 2 = 1.84 phần nguyên = 1

„

0.4

x2=

0.8

phần nguyên = 0

0.84 x 2 = 1.68 phần nguyên = 1

„

„

0.8

x2=

1.6

phần nguyên = 1

„

0.6

x2=

1.2

phần nguyên = 1

0.81(10) ≈ 0.1100111(2)

Phạm Quang Dũng

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

†
3.13

0.2(10) ≈ 0.00110011(2)

Phạm Quang Dũng

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

3.14

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

Chữ số Hexa

†

Cơ số 16

0000

0

0001

1

†

16 chữ số: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F

0010

2

†

0000 00002 = 0016

0011

3

†

Dùng để viết gọn cho số nhị phân: cứ một

0100

4

1011 00112 = B316

0101

5

nhóm 4 bit sẽ được thay thế bằng 1 chữ số

0110

6

0111

7

†

0010 1101 1001 10102 = 2D9A16

Hexa

1000

8

†

1111 1111 1111 11112 = FFFF16

1001

9

1010

A

†

Phạm Quang Dũng

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

3.15

1011

B

1100

C

1101

D

1110

E

1111

F

Phạm Quang Dũng

Ví dụ chuyển đổi số nhị phân Æ số Hexa:

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

3.16

4

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

1. Nguyên tắc chung về mã hoá dữ liệu

†

†

†

qui ước

Mọi dữ liệu đưa vào máy tính đều được mã
hoá thành số nhị phân

Dữ liệu số nguyên: mã hoá theo một số chuẩn

†

Các loại dữ liệu

Dữ liệu số thực: mã hoá bằng số dấu chấm
động

„

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

†

Dữ liệu ký tự: mã hoá theo bộ mã ký tự

người

Phạm Quang Dũng

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

3.17

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Độ dài từ dữ liệu (word)
†

3.18

Độ dài từ dữ liệu là số bit được sử dụng để mã
hoá loại dữ liệu tương ứng

†

†

Thường là bội của 8 bit

†

VD: 8, 16, 32, 64 bit

Các dữ liệu vật lý thông dụng:
„

Âm thanh

„

Hình ảnh

Phạm Quang Dũng

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

3.19

Phạm Quang Dũng

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

3.20

5

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

2. Thứ tự lưu trữ các byte của dữ liệu

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

†

Bộ nhớ chính thường được tổ chức theo byte

†

Độ dài từ dữ liệu có thể chiếm từ một đến nhiều
byte

Æ

cần phải biết thứ tự lưu trữ các byte trong bộ nhớ
chính với các dữ liệu nhiều byte.

‰

Có 2 cách lưu trữ:

ƒ

Lưu trữ đầu nhỏ (Little-endian): Byte thấp được lưu
trữ ở ngăn nhớ có địa chỉ nhỏ hơn, byte cao được lưu
trữ ở ngăn nhớ có địa chỉ lớn hơn.

ƒ

Lưu trữ đầu to (Big-endian): Byte cao được lưu trữ ở
ngăn nhớ có địa chỉ nhỏ hơn, byte thấp được lưu trữ
ở ngăn nhớ có địa chỉ lớn hơn.

Phạm Quang Dũng

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

3.21

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

†

Intel 80x86 và các Pentium:

Có hai loại số nguyên:

⇒ Little-endian

†

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

Motorola 680x0 và các bộ xử lý RISC:

†

Số nguyên có dấu (Signed Integer)

3.22

⇒ Big-endian
†

Power PC và Itanium: cả hai

Phạm Quang Dũng

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

3.23

Phạm Quang Dũng

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

3.24

6

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Các ví dụ

†

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

†

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

an-1an-2…..a2a1a0

Giải:

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

A = 41 = 32 + 8 + 1 = 25 + 23 + 20
41 = 0010 1001

n −1

A = ∑ ai 2i

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

i =0

150 = 1001 0110

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

Phạm Quang Dũng

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

B=150

3.25

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Với n = 8 bit

†

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 0010

„

N = 1011 1001

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

M = 0001 0010 = 24 + 21 = 16 + 2 = 18

„

N = 1011 1001 = 27 + 25 + 24 + 23 + 20

3.26

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

Chú ý:

0000 0001 = 1

1111 1111

0000 0010 = 2

+ 0000 0001

0000 0011 = 3

1 0000 0000


1111 1111 = 255

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

= 128 + 32 + 16 + 8 + 1 = 185
Phạm Quang Dũng

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

3.27

Phạm Quang Dũng

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

3.28

7

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

†

Trục số học:

†

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

0

1

254

2
3

Phạm Quang Dũng

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

3.29

n = 16 bit: dải biểu diễn từ 0 đến 65535 (216-1)
„

0000 0000 0000 0000 = 0

„

„

0000 0000 1111 1111 = 255

„

0000 0001 0000 0000 = 256

„

„

1111 1111 1111 1111 = 65535

†

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

†

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

Phạm Quang Dũng

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

3.30

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

a. Số bù một và Số bù hai:
†

†

„

Số bù một của A nhận được bằng cách đảo giá trị các
bit của A

„

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

„

Giả sử có

A

= 0010 0101

„

Số bù một của A

= 1101 1010

„

Số bù hai của A

an-1an-2…a2a1a0

†

1

= 1101 1011

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

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ì A + (Số bù hai của A) = 0 Æ dùng số bù hai để
biểu diễn cho số âm

Phạm Quang Dũng

nguyên có dấu A:

†

Ví dụ: với n= 8 bit

+
†

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

Giả sử A là một số nhị phân, ta có:

3.31

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

Phạm Quang Dũng

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

3.32

8

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Biểu diễn số âm

†

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

†

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

0an-2…a2a1a0
†

1an-2…a2a1a0

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

†

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

n −2

A = ∑ ai 2

A = −2

i

n −1

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

Phạm Quang Dũng

+ ∑ ai 2i
i =0

i =0

†

n−2

2n-1-1

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

†

3.33

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

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Các ví dụ

†

†

Dạng tổng quát của số nguyên A:
an-1an-2…a2a1a0

†

A = −an−1 2
†

A = +58

;

A = +58

n−2

+ ∑ ai 2

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

Giải:

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

3.34

= 0011 1010

B = -80

i

Ta có: +80 = 0101 0000

i =0

Số bù một

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

= 1010 1111
+

Số bù hai

1

= 1011 0000

Vậy: B = -80 = 1011 0000
Phạm Quang Dũng

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

3.35

Phạm Quang Dũng

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

3.36

9

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Các ví dụ

Với n = 8 bit

†

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 0010

„

Q = 1101 1011

Giải:
„

P = 0110 0010 = 64 + 32 + 2 = +98

„

Q = 1101 1011 = -128+64+16+8+2+1 = -37

Phạm Quang Dũng

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

3.37

Biểu diễn được các giá trị từ -128 đến +127
0000 0000 =
0
0000 0001 =
+1
+2
Chú ý:
0000 0010 =
0000 0011 =
+3
+127 + 1 = -128

-128 - 1 = +127
0111 1111 =
+127
Æ do tràn xảy ra
1000 0000 =
- 128
1000 0001 =
- 127

1111 1110 =
-2
1111 1111 =
-1
Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

†

Trục số học:

†

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

Phạm Quang Dũng

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

3.39

3.38

Với n=16 bit: biểu diễn từ -32768 đến +32767
„

0000 0000 0000 0000 = 0

„

0000 0000 0000 0001 = +1

„

„

0111 1111 1111 1111 = +32767

„

1000 0000 0000 0000 = - 32768

„

„

1111 1111 1111 1111 = -1

†

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

†

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

Phạm Quang Dũng

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

3.40

10

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

Đối với số dương:

†

Binary Coded Decimal Code

+19 =

†

Dùng 4 bit để mã hoá cho các chữ số thập
phân từ 0 đến 9

0001 0011 (8 bit)

+19 = 0000 0000 0001 0011 (16 bit)

0 Æ 0000

5 Æ 0101

1 Æ 0001

6 Æ 0110

2 Æ 0010

7 Æ 0111

(8 bit)

3 Æ 0011

8 Æ 1000

(16 bit)

4 Æ 0100

9 Æ 1001

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

Đối với số âm:
- 19 =

1110 1101

- 19 = 1111 1111 1110 1101
Æ thêm 8 bit 1 bên trái

†

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

Phạm Quang Dũng

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

3.41

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Ví dụ số BCD

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

†

35

Æ

0011 0101BCD

†

61

Æ

0110 0001BCD

†

1087

Æ

0001 0000 1000 0111BCD

†

9640

Æ

1001 0110 0100 0000BCD

3.42

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:

0011
†

0101

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:

0011 0101
Phạm Quang Dũng

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

3.43

Phạm Quang Dũng

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

3.44

11

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

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

Khi cộng hai số nguyên không dấu n-bit, kết

Bộ cộng n-bit

quả nhận được là n-bit:
†

Nếu không có nhớ ra khỏi bit cao nhất thì kết quả
nhận được luôn luôn đúng (Cout = 0).

†

Nếu có nhớ ra khỏi bit cao nhất thì kết quả nhận
được là sai, ⇔ có tràn nhớ ra ngoài (Cout = 1).

†

Phạm Quang Dũng

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

3.45

Tràn nhớ ra ngoài (Carry Out) xảy ra khi tổng >2n-1

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

2. Phép đảo dấu

57
+ 34
91

†

†

=
0011 1001
= + 0010 0010
0101 1011

†

= 64+16+8+2+1= 91 Æ đúng

209 =
1101 0001
+ 73 =
0100 1001
282
1 0001 1010
= 16 + 8 + 2 = 26 Æ sai
Æ có tràn nhớ ra ngoài (Cout = 1)
Để có kết quả đúng ta thực
209 =
0000 0000 1101
+ 73 = + 0000 0000 0100
0000 0001 0001

Phạm Quang Dũng

†

hiện cộng theo 16-bit:
0001
1001
1010 = 256+16+8+2 = 282

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

3.47

†

Ta có:
+ 37
bù một

=
=

bù hai

=

0010 0101
0101 1010
+
1
1101 1011

Lấy bù hai của số âm:
- 37
=
1101 1011
bù một
=
0010 0100
+
1
bù hai
=
0010 0101

3.46

= -37

= +37

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

Phạm Quang Dũng

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

3.48

12

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

Khi cộng 2 số nguyên có dấu n-bit không quan

†

tâm đến bit Cout và kết quả nhận được là n-bit:
†

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

†

Cộng 2 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ả là sai.

†

Tràn xảy ra khi tổng nằm ngoài dải biểu diễn

†

[-(2n-1),+(2n-1-1)]
Phạm Quang Dũng

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

3.49

(+70)
+ (+42)
+112

=
=

(+97)
+ (- 52)
+45

=
=

(- 90)
+ (+36)
- 54

=
=

(- 74)
+ (- 30)
- 104

=
=

Phạm Quang Dũng

0100 0110
0010 1010
0111 0000
0110 0001
1100 1100
1 0010 1101
1010 0110
0010 0100
1100 1010
1011 0110
1110 0010
1 1001 1000

= +112

= +45

= -54

= -104

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Ví dụ cộng số nguyên có dấu bị tràn

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

=
=

0100 1011
0101 0010
1001 1101
= -128 + 16 + 8 + 4 + 1 = -99 Æ sai

†

(- 104) =
+ (- 43) =
- 147

1001 1000
1101 0101
1 0110 1101
= 64 + 32 + 8 + 4 + 1 = +109 Æ sai

†

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

†

(+75)
+ (+82)
+157

Phạm Quang Dũng

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

3.51

3.50

†

Phép trừ 2 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

Phạm Quang Dũng

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

3.52

13

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Ví dụ 1011 x 1101 (11 x 13 = 143)

Bắt đầu

C
0; A
0
số bị nhân
M
số nhân; BĐ = n
Q
N

Q0 = 1

†

C, A

Dịch phải C, A, Q

BĐ - 1
N

A+M

†

Số bị nhân
= 1011 Æ M

†

Số nhân =
1101 Æ Q

C

A

Q

0

0000

1101

/ các giá trị khởi đầu /

1101

C, A Å A + M

0

0101

1110

Dịch phải 1 bit

n=3

0

0010

1111

Dịch phải 1 bit

n=2

1101

1111

C, A Å A + M

0110

1111

Dịch phải 1 bit

†

2 thừa số là n-bit

0

Æ tích là số 2n-bit

0

được

chứa

trong

cặp thanh ghi A, Q

Dừng

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

3.53

1011
1011

C: 1 bit

Y

+

0

†

BĐ = 0

Phạm Quang Dũng

n=4

Các thanh ghi M,
Q, A: n bit

Y

†

+

+

1011

1

0001

1111

C, A Å A + M

0

1000

1111

Dịch phải 1 bit

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Nhân số nguyên có dấu (tiếp)

†

Phương pháp 1:

†

Phương

pháp

Sử

2. Nhân 2 số dương như số nguyên không dấu

toán nhân nhanh

3. Hiệu chỉnh dấu của kết quả:

Booth

Nếu 2 thừa số cùng dấu Æ không cần hiệu chỉnh

†

Nếu 2 thừa số khác dấu Æ đảo dấu kết quả bằng

n=0
3.54

2:

1. Chuyển đổi các thừa số thành số dương

†

dụng

n=1

1011

thuật

cách lấy bù 2.

Phạm Quang Dũng

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

3.55

Phạm Quang Dũng

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

3.56

14

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Ví dụ (+7) x (-3) = (-21) theo Booth

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

†

n=4

†

Số bị nhân =

+

0111 Æ M
†
†

-M = 1001
310 =

0011

-310 = 1101

+
1

(Số nhân)ÆQ

Bỏ đi

+

A

Q

Q-1

0000

1101

0

/ các giá trị khởi đầu /

1001

1101

0

A Å A - M = A + (-M)

1100

1110

1

Dịch phải, giữ dấu A, n = 3

0011

1110

1

AÅA+M

0001

1111

0

Dịch phải, giữ dấu A, n = 2

1010

1111

0

AÅA-M

1101

0111

1

Dịch phải, giữ dấu A, n = 1

1110

1011

1

Dịch phải, giữ dấu A, n = 0

1001

0111
Khôi phục A

1001

Phạm Quang Dũng

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

3.57

Phạm Quang Dũng

†

Thương chứa trong Q,

†

Phần dư chứa trong A

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Ví dụ 7:3 = 2 dư 1

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

†
†

n=4

A

Q

0000

0111

/ các giá trị khởi đầu /

Số bị chia =

0000

1110

Dịch trái

0111 Æ Q
†

†

1101

A Å A - M = A + (-M)

0000

1110

Khôi phục A,

Số chia = 310

0001

1100

Dịch trái

= 0011 Æ M

1110

-M = 1101

0001

1100

Khôi phục A,

0011

1000

Dịch trái

„

Đổi số bị chia và số chia Æ dương

„

Chia như số nguyên không dấu Æ thương và
phần dư (đều là số dương)

n=2

AÅA-M

0000

1001

Q0 Å 1,

0001

0010

Dịch trái

n=1

AÅA-M

1110

Phạm Quang Dũng

Sử dụng thuật giải chia số nguyên không dấu

AÅA-M

0000

0001

n=3

†

0010

Khôi phục A,

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

3.58

n=0
3.59

„

Hiệu chỉnh dấu:
†

(+) : (+)

Æ không hiệu chỉnh dấu kết quả

†

(+) : (-)

Æ đảo dấu thương

†

(-) : (+)

Æ đảo dấu thương và phần dư

†

(-) : (-)

Æ đảo dấu phần dư

Phạm Quang Dũng

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

3.60

15

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

3.5. Số dấu chấm động

2. Chuẩn IEEE754/85

1. Nguyên tắc chung

†

Cơ số R = 2

†

Các dạng:

†

Floating Point Number Æ biểu diễn cho số thực

†

Tổng quát: một số thực X được biểu diễn theo

„

Dạng 32-bit

kiểu số dấu chấm động như sau:

„

Dạng 44-bit

„

Dạng 64-bit

„

Dạng 80-bit

X=M*

RE

„

M là phần định trị (Mantissa),

„

R là cơ số (Radix),

„

E là phần mũ (Exponent).

Phạm Quang Dũng

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

3.61

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Dạng 32-bit
†

†

†

S là bit dấu:
„

S = 0 Æ Số dương

„

S = 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 được gọi là độ lệch (bias)

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

†

3.62

M = 1.m

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

Phạm Quang Dũng

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

3.63

Phạm Quang Dũng

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

3.64

16

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Ví dụ 1

Ví dụ 2

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ố âm

„

e = 1000 00102 = 130 Æ E = 130 – 127 = 3

†

*

chấm động IEEE754 32-bit
Giải:

Vậy:
X = -1.10101100

Biểu diễn số thực X = 83.75 về dạng số dấu

†

X = 83.7510 = 1010011.112 = 1.01001111 x 26

†

Ta có:

23 = -1101.011 = -13.375

0011 1111 1000 0000 0000 0000 0000 0000 = ?

†

= +1.0
Phạm Quang Dũng

„

S = 0 vì đây là số dương

„

E = e-127=6 Æ e = 127+6=13310 = 1000 01012

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

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

3.65

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

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

†

Các bit của e bằng 0, các bit của m bằng 0, thì X= ± 0
x000 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= ±

2-127 đến 2+127

†

10-38 đến 10+38

x111 1111 1000 0000 0000 0000 0000 0000 Æ X= ±

†

†

3.66

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

Phạm Quang Dũng

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

3.67

Phạm Quang Dũng

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

3.68

17

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Dạng 64-bit

Dạng 80-bit

†

S là bit dấu

†

S là bit dấu

†

e (11 bit) là mã excess-1023 của phần mũ E:

†

e (15 bit) là mã excess-16383 của phần mũ E:

Æ E = e – 1023

Æ E = e – 16383

†

m (52 bit) là phần lẻ của phần định trị M:

†

m (64 bit) là phần lẻ của phần định trị M:

†

Giá trị của số thực:

†

Giá trị của số thực:

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

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

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

Phạm Quang Dũng

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

†

3.69

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

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

1. Bộ mã ASCII
†

†

†

†

(American

National

Standard

Bộ mã 8 bit Æ có thể mã hóa được 28 =256 ký
tự, có mã từ: 0016 ÷ FF16 , trong đó:

Bộ mã Unicode

Phạm Quang Dũng

ANSI

Institute) thiết kế

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

Do

3.70

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

3.71

„

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

„

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

Phạm Quang Dũng

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

3.72

18

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Các ký tự chuẩn
†

ASCII
Character
Code
128 ký tự
chuẩn

†

Phạm Quang Dũng

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

3.73

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

‘A’

Æ

0100 0001

=

4116

„

‘B’

Æ

0100 0010

=

4216

„

...

„

‘Z’

Æ

0101 1010

=

5A16

26 chữ cái thường ‘a’ đến ‘z’ có mã từ 6116 đến 7A16 (97
đến 122)
„

‘a’

Æ

0110 0001

=

6116

„

‘b’

Æ

0110 0010

=

6216

„

...

„

‘z’

Æ

0111 1010

=

7A16

Phạm Quang Dũng

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

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

Các ký tự chuẩn (tiếp)

Các ký tự chuẩn (tiếp)

†

10 chữ số thập phân từ 0 đến 9 có mã từ 3016
đến 3916 (48 đến 57)

†

Các ký hiệu khác:
„

Các dấu câu: . , : ; ...

„

‘0’

Æ

0011 0000

=

3016

„

Các dấu phép toán: + - * / % ...

„

‘1’

Æ

0011 0001

=

3116

„

một số ký hiệu thông dụng: &, $, @, #

„

‘2’

Æ

0011 0010

=

3216

„

dấu cách (space)

„

...

„

‘9’

Æ

0011 1001

=

3916

Phạm Quang Dũng

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

3.75

3.74

Phạm Quang Dũng

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

3.76

19

Chương 3: Biểu diễn dữ liệu và số học máy tính

Chương 3: Biểu diễn dữ liệu và số học máy tính

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

Các ký tự mở rộng: có mã 8016 ÷ FF16

†

Các mã ký tự điều khiển định dạng (điều khiển màn

†

hình, máy in …):
„

†

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

†

†

SOH, STX, ETX, EOT, ENQ, ACK, NAK, SYN, ETB

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

†

BS, HT, LF, VT, FF, CR

FS, GS, RS, US

Các mã ký tự điều khiển khác:
„

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.

„

Có thể thay đổi các ký tự mở rộng để mã hóa

NUL, BEL, SO, SI, DLE, DC1+DC4, CAN, EM, SUB,

cho các ký tự riêng của tiếng Việt, ví dụ như bộ

ESC, DEL

mã TCVN3.

Phạm Quang Dũng

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

3.77

Chương 3: Biểu diễn dữ liệu và số học máy tính

Phạm Quang Dũng

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

3.78

Chương 3: Biểu diễn dữ liệu và số học máy tính

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-bit

†

Bộ mã đa ngôn ngữ

†

Có hỗ trợ các ký tự tiếng Việt

Phạm Quang Dũng

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

Unicode
Character
Code
256 ký tự
chuẩn

3.79

Phạm Quang Dũng

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

3.80

20

Sign up to vote on this title
UsefulNot useful