You are on page 1of 55

Chương 2:

Biểu diễn dữ liệu trong các hệ thống máy tính

TS. Phạm Công Thắng


Bộ môn Hệ thống nhúng
Khoa Công nghệ Thông tin
Đại học Bách Khoa – Đại học Đà Nẵng

CuuDuongThanCong.com https://fb.com/tailieudientucntt
• Tài liệu Tham khảo:
[1] Computer Organization and Architecture 8th Edition, William
Stallings,2011
[2] Bài giảng kiến trúc máy tính – Viện CNTT-ĐH BK HN
[3] Andrew S. Tanenbaum, Structured Computer Organization, 5rd
Edition, Prentice- Hall International Edition, 2006.
[4] Các nguồn tham khảo khác từ internet

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn dữ liệu trong các hệ thống máy tính

• Giới thiệu chung


• Các hệ biểu diễn số
• Các phép toán trên bit
• Biểu diễn số trên máy tính
• Các phép số học trong máy tính

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giới thiệu chung
• Về mặt toán học, ta có thể biểu diễn số theo hệ đếm cơ số bất kì.
• Khi nghiên cứu về máy tính, ta chỉ quan tâm đến các hệ đếm sau đây:
• Hệ thập phân (Decimal System)
• Hệ nhị phân (Binary System)
• Hệ bát phân (Octal System)
• Hệ mười sáu (Hexadecimal System)

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đơn vị thông tin
• Bit
• Đơn vị thông tin nhỏ nhất
• Chữ số nhị phân 0 hoặc 1
• Byte:
• Đơn vị thông tin cơ bản để lưu trữ thông tin
• 1 byte =  8 bit
• 1 nibble =4 bit (half-byte)
• Đơn vị thông tin khác:
• 1 Kilo Byte = 1 KB = 210 byte = 1024 byte
• 1 Mega Byte = 1 MB = 210 KB = 1048576 byte
• 1 Giga Byte = 1 GB = 210 MB
• …
5

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ thập phân (decimal)
• Hệ cơ số 10
• Chỉ sử dụng 10 chữ số: 0, 1, …,9
• Ví dụ:

248  2  10 2  4  101  8  10 0

458.45  4  10 2  5  101  8  10 0  4  10 1  5  10 -2

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ thập phân (decimal)
• Tổng quát:

A (10)  anan1...a1a0 , a 1...a m

A (10)  an10n  an110n1...  a1101  a0 10 0  a 110 1...  a m 10 m


n
A (10)   ai10i
có igiá
 m trị trong khoảng 0 đến 9

a0 , a1,..., an , a 1,..., a m

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ nhị phân (binary)
• Hệ cơ số 2
• Chỉ sử dụng 2 chữ số nhị phân: 0, 1
• Chữ số nhị phân gọi là bit (binary digit)
• Ví dụ:

1011.11 (2)  1011.11b  1 23  0  22  1 21  1 20  1 2-1  1 2-2


 8  0  2  1  0.5  0.25  11.75 (10)

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ nhị phân (binary)
• Tổng quát

A (2)  anan1...a1a0 , a 1...a m

A  an 2n  an1 2n1...  a1 21  a0 20  a 1 21...  a m 2m


n
A   ai 2i
i  m

a0 , a1,..., an , a 1,..., a m là các giá trị 0 hoặc 1

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ thập lục phân (hexa-decimal)
• Hệ cơ số 16
• Sử dụng 16 chữ số : 0, 1,2,3,4,5,6 ,7,8,9, A, B, C, D, E, F
• Các chữ số A ,B, C, D, E, F biểu diễn các giá trị tương ứng là 10, 11, 12,
13, 14, 15
• 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
• Ví dụ:

FB4 (16)  FB4h  15  16 2  11 161  4  16 0


 3840  176  4  402010

10

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ cơ số X (X>=2)
• Sử dụng X chữ số : 0, 1,…,X-1 để biểu diễn
• Ví dụ:

137(8)  1 8 2  3  81  7  80
 64  24  7  95 (10)

11

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hệ cơ số X (X>=2)
• Tổng quát

A (X)  anan1...a1a0 , a 1...a m

A  an Xn  an1Xn1...  a1X1  a0 X0  a 1X 1...  a m X m


n
A   ai Xi
có giá trị trong
i  m khoảng 0 đến X-1
a0 , a1,..., an , a 1,..., a m

12

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi hệ cơ số
• Đổi hệ cơ số X sang hệ thập phân

A (X)  anan1...a1a0 , a 1...a m

A  an Xn  an1Xn1...  a1X1  a0 X0  a 1X 1...  a m X m

• Ví dụ:
122 (7)  1 7 2  2  71  2  70
 49  14  2  65 (10)

13

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi hệ cơ số
• Đổi số nguyên thập phân A sang hệ cớ số X
• Chia dần cho X rồi lấy phần a và thương số N
0 0
• Tiếp tục thực hiện phép chia cho đến khi thương số bằng 0
• Kết quả nhận được các số dư:
• Ta nhận được kêt quả (đảo ngược a1,tựancác số dư) :
a0 ,thứ

A (X)  an an-1 a0

14

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi số nguyên thập phân A sang hệ cớ số X
• Ví dụ: chuyển đổi133 (10) sang hệ 2

10000101 (2)

15

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi số lẻ thập phân A sang hệ cơ số X

• Đổi số lẻ thập phân A sang hệ cơ số X


• Nhân phần thập phân với X, phần nguyên của tích nhận được là b1

• Nếu phần thập phân nhận được khác không, tiếp tục cho đến khi phần
thập phân của tích nhận được bằng 0 (hoặc dừng lại sau một số bước)

• Phần thập phân A trong hệ cơ số X sẽ là: b1 b 2 bm

16

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi số lẻ thập phân A sang hệ cơ số X
• Ví dụ:

0.625 (10)  0.101 (2)

17

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đổi số lẻ thập phân A sang hệ cơ số X
• Ví dụ:

0.4 (10)  0.0110011 (2)

18

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Chuyển đối giữa số nhị phân và thập lục phân

• Nhóm 4 bit từ phải qua trái và đổi sang chữ số trong hệ thập lục phân
tương ứng
• Ví dụ: chuyển đổi số nhị phân sang hệ thập
1111 0111 1010 0001 (2)
lục phân

1111 0111 1010 0001 (2)

F 7 A 1 (2)

1111 0111 1010 0001 (2)  F7 A1(16 )

19

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Chuyển đối giữa số nhị phân và bát phân
• Nhóm 3 bit từ phải qua trái và đổi sang chữ số trong hệ bát phân
tương ứng
1111 0111 1010 0001 (2)
• Ví dụ: chuyển đổi số nhị phân sang bát phân

001 111 011 110 10 0 001 (2)

1 7 3 6 4 1 (2)

1111 0111 1010 0001 (2)  173641( 8 )

20

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các phép toán trên bit
• Các phép toán số học
• Cộng(+), trừ(-), nhân(*) và chia(/)
• Các phép toán logic
• AND(&), OR(|), XOR(⊕) và NOT(!)
• Thứ tự ưu tiên(left-right, top-down)
• *, / , + và - ,
• !, &, ⊕ và |

21

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các phép toán trên bit
• Các phép toán số học trên bit

• Ví dụ:
+ +
1001 0101 (2) 149 (10

0101 1101 (2) 93 (10)

1111 0010 (2) 242 (10)

22

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các phép toán logic trên bit
• Các phép toán logic trên bit
Not : !0 =1 !1= 0

23

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các cổng logic cơ bản
• Có các loại cổng logic cơ bản sau đây: BUFFER, NOT, AND, OR,
NAND, NOR, XOR và XNOR.
• Cổng BUFFER

• Cổng NOT

24

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các cổng logic cơ bản
• Cổng AND

• Cổng NAND

25

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các cổng logic cơ bản
• Cổng OR

• Cổng NOR

26

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các cổng logic cơ bản
• Cổng XOR

• Cổng XNOR

27

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số trên máy tính
• Dùng 1 chuỗi bit để biểu diễn. Có 2 trường hợp:
• Số nguyên không dấu (Unsigned)
• Số nguyên có dấu (Signed)

28

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên không dấu (Unsigned)
• Là một dãy bít 1 byte biễu diễn các giá trị từ 0-->255
• Biểu diễn số nguyên lớn thì ghép các byte: 2 byte, 4 byte,…
• Dạng tổng quát:
A  an1...a1a0

A  an1 2n1...  a1 21  a0 20
n1
A   ai 2i
i0

• Dải biểu diễn của A:


[0, 2n - 1]

29

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên không dấu (Unsigned)
• Dải biểu diễn
• n =8 bit : dải biểu diễn là: [0, 255]
• n =16 bit : dải biểu diễn là: [0,65535]
• n =32 bit : dải biểu diễn là:
32
• n =64 bit : dải biểu diễn là: [0, 2 - 1]
[0, 264 - 1]

30

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên không dấu (Unsigned)
• Ví dụ:
• 1. Biểu diễn số nguyên không dấu A = 44 bằng 8 bit:
A = 44  32  8  4  25  23  22
 A=
0010 1100 (2)

2. Cho số nguyên không dấu A được biểu diễn bằng 8 bit


A=
Giá trị của A trong hệ thập phân là
A= 1100 1100 (2)

• 27  26  23  22  128  64  8  4  204

31

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Số bù hai
• Cho 1 số nguyên nhị phân được biểu diễn bởi n bit. Khi đó:
• Số bù một của A: đảo ngược tất cả các bit của A
• Số bù hai của A : số bù một của A cộng 1
• Biểu diễn số âm bằng số bù 2

32

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên có dấu (Signed)

• Biểu diễn số nguyên có dấu (Signed)


• Số âm

• Số dương

• Là một dãy bít


• Bít đầu tiên bên trái được dùng để biểu diễn dấu:

• 1 biểu diễn số âm

• 0 biểu diễn số dương

• 1 byte (8 bit) biểu diễn các giá trị từ -128 ---> 127

33

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên có dấu (Signed)
• Nguyên tắc tổng quát: A  an1...a1a0
• 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ố nguyên 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ói bit
an1  1

34

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên có dấu (Signed)
• Biểu diễn số dương A
A  0an2 ...a1a0
• Giá trị số dương A trong hệ thập phân:
n2
A   a i 2i
i 0

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


A  2n-1 - 1

35

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên có dấu (Signed)
• Biểu diễn số dương A
A  0an2 ...a1a0
• Giá trị số dương A trong hệ thập phân:

n2
n1
A  2   a i 2i
i 0
• Dải biểu diễn cho số âm: từ -1 đến

 2n-1

36

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số nguyên có dấu (Signed)

• Ví dụ: Biểu diễn số nguyên có dấu sau đây bằng 8 bit:

• A= - 60 (10)

• B= 58 (10)

60 (10)  00111100 (2)

Bù 1:1100 0011 B   58  00111010


+1
Bù 2:
1100 0100
Vậy A=
- 60 (10)  11000100 ( 2 )

37

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số thực
• Để biểu diễn số thực, trong máy tính người ta thường dùng dấu chấm
động (Floating Point Number) :
• N  M * RE
• M là phần định trị (Mantissa)
• R là cơ số (Radix)
• E là phần mũ (Exponent)

• Trong cơ số R bất kỳ thì :

R -1 | F | 1

38

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số thực
• Chuẩn IEEE:
• Cơ số X = 2
• Các dạng: độ chính đơn 32 bit và kép 64 bit
• Các qui ước

31 30 23 22 0

S E    11bit f   52 bit
63 62 52 51 0

N = (-1)S * 2 (E-127) * (1.f)


39

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số thực
• Ví dụ: Xác định giá trị thập phân của số thực A được biểu diễn bằng
32-bit như sau:
A  1100 0001 0 101 0110 0000 0000 0000 0000

A  1100 0001 0 101 0110 0000 0000 0000 0000

A  -1 * 2(130-127) * 1.101011

A  -1.101011 * 23  - 1101.011  - 13.375 (10)

40

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn số thực
• Ví dụ: Biểu diễn các số thực sau đây về dạng số dấu phẩy động
chuẩn IEEE 32-bit: A = - 27.625

27  16  8  2  1  11011 (2)
27.625  11011.101 (2)  1.1011101*2 4

0.625
s=1 0.5  0.125
vì là số âm 0.101 (2)

f=1011101
E - 127  4  E  131  10000011 (2)

A  1 10000011 1 011101 0000000000 000000

41

CuuDuongThanCong.com https://fb.com/tailieudientucntt
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 C  0 : nhận được kết quả đúng.
out
• Nếu : nhận được kết quả sai, do tràn nhớ ra ngoài (Carry
Out).Cout  1
n
• Tràn nhớ ra ngoài khi: kết quả > – 1)
(2

42

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Cộng số nguyên không dấu
• Ví dụ
53 0011 0101
+38 + 0010 0110
91 0101 1011 91 đúng

200 1100 1000 0000 0000 1100 1000


+ 61 + 0011 1101 + 0000 0000 0011 1101

261 0000 0101 0000 0001 0000


0101
5 sai! 261 đúng

43

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Phép trừ hai số nguyên
• Phép trừ hai số nguyên X−Y=X+(−Y)
• Lấy bù hai của Y để được –Y, rồi cộng với X
• Thực hiện như cộng số nguyên

44

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Nhân số nguyên không dấu
• Thực hiện phép nhân như trong hệ thập phân
• Nếu bit của số nhân bằng 0 thì tích bằng 0.
• Nếu bit của số nhân bằng 1 thì tích riêng phần bằng số bị nhân
• Nhân hai số nguyên n-bit, tích có độ dài 2n bit

45

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Nhân số nguyên có dấu
• Chuyển đổi số bị nhân và số nhân thành số dương tương ứng
• Nhân hai số dương như nhân số nguyên không dấu, nhận được tích
của hai số dương.
• 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ả
• Nếu hai thừa số ban đầu là khác dấu thì đảo dấu kết quả (lấy bù hai)

46

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Chia số nguyên không dấu và có dấu
• Chia số nguyên không dấu
• Thực hiện chia thông thường như chia hai số thập phân
• Chia số nguyên có dấu
• Chuyển đổi số bị chia và số chia về thành số dương tương ứng
• Thực hiện phép chia số nguyên không dấu để chia hai số dương, kết quả
nhận được là thương và phần dư đều là dương
• Hiệu chỉnh dấu của kết quả như sau:

• phép đảo dấu là phép lấy bù hai

47

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các phép số học lên số thực
• Các phép số học lên số thực

X1 = M1× R E1 X 2 = M 2 × R E2

X1× X 2 = (M1× M 2 )× R E1 +E2

X1 ÷ X 2 = (M1 ÷ M 2 )× R E1 -E2

X1 ± X 2 = (M1× R E1 -E 2 ± M 2 )× R E2 , E 2 ³ E1

48

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các phép số học lên số thực

• Kiểm tra các số hạng có bằng 0 hay không

• Hiệu chỉnh phần định trị (phần mũ)

• Thực hiện phép toán ở phần định trị (phần mũ)

• Chuẩn hoá kết quả

49

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn ký tự
• Các ký tự cũng cần được chuyển đổi thành chuỗi bit nhị phân gọi là
mã ký tự.
• Số bit dùng cho mỗi ký tự theo các mã khác nhau là khác nhau.
• Ví dụ
• Bộ mã ASCII dùng 8 bit cho 1 ký tự
• Bộ mã Unicode dùng 16 bit

50

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn ký tự
• Bộ mã ASCII
• Do ANSI (American National Standard Institute) thiết kế
• ASCII là bộ mã được dùng để trao đổi thông tin chuẩn của Mỹ.
• Lúc đầu chỉ dùng 7 bit (128 ký tự) sau đó mở rộng cho 8 bit và có thể
biểu diễn 256 ký tự khác nhau trong máy tính
• Bộ mã 8 bit : mã hóa được cho 256 kí tự, có mã từ
• 128 ký tự chuẩn
0016   FF16 ,
• 128 ký tự mở rộng

51

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn ký tự
• Ký tự chuẩn – Bộ mã ASCII Do ANSI (American National Standard
Institute) thiết kế
• 95 kí tự hiển thị
• Chữ cái hoa Latin A ÷ Z
• 26 chữ cái thường Latin a ÷ z
• 10 chữ số thập phân 0 ÷ 9)
• Các dấu câu: . , ? ! : ; …
• Các dấu phép toán: + - * / …
• Một số kí tự thông dụng: #, $, &, @, ...
• 33 mã điều khiển: dùng để mã hóa cho các chức năng điều khiển

52

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn ký tự
• Bộ mã ASCII (ký tự chuẩn)

53

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Biểu diễn ký tự
• Ký tự mở rộng – Bộ mã ASCII
• Được định nghĩa bởi nhà chế tạo máy tính hay nhà phát triển
phần mềm
• Bộ mã ký tự mở rộng của IBM: được dùng trên máy tính IBM-
PC.
• Bộ mã ký tự mở rộng của Apple: được dùng trên máy tính
Macintosh.
• Các nhà phát triển phần mềm tiếng Việt cũng đã thay đổi phần
này để - mã hoá cho các ký tự riêng của chữ Việt, ví dụ như
bộ mã TCVN 5712.
• Bộ mã Unicode
• Do các hãng máy tính hàng đầu thiết kế
• Là bộ mã 16-bit
• Được thiết kế cho đa ngôn ngữ, trong đó có tiếng Việt.

54

CuuDuongThanCong.com https://fb.com/tailieudientucntt
HẾT CHƯƠNG 2

55

CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like