Tải bản đầy đủ (.pdf) (60 trang)

Bài giảng Kiến trúc máy tính (Computer Architecture) Chương 4

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.1 MB, 60 trang )

NKK-HUST

.c

om

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

cu
u

du

on

g

th

an

co

ng

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

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


2017

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

134
/>

NKK-HUST

Nội dung học phần

cu
u

du

on

g

th

an

co

ng

.c


om

Chương 1. Giới thiệu chung
Chương 2. Cơ bản về logic số
Chương 3. Hệ thống máy tính
Chương 4. Số học máy tính
Chương 5. Kiến trúc tập lệnh
Chương 6. Bộ xử lý
Chương 7. Bộ nhớ máy tính
Chương 8. Hệ thống vào-ra
Chương 9. Các kiến trúc song song
2017

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

135
/>

NKK-HUST

om

Nội dung chương 4

cu
u

du


on

g

th

an

co

ng

.c

4.1. Biểu diễn số nguyên
4.2. Phép cộng và phép trừ số nguyên
4.3. Phép nhân và phép chia số nguyên
4.4. Số dấu phẩy động

2017

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

136
/>

NKK-HUST


.c

om

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

ng

co

cu
u

du

on

g

th

n

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

an

n


2017

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

137
/>

NKK-HUST

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

om

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

.c

n

an

co

ng

an−1an−2 ... a2 a1a0

cu

u

du

on

g

th

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

A = ∑ ai 2

i

i=0

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

n−1

[0, 2n – 1]

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

138
/>


NKK-HUST

Ví dụ 1

om

Biểu diễn các số ngun khơng dấu sau đây
bằng 8-bit:
A = 41 ; B = 150
Giải:
A = 41 = 32 + 8 + 1 = 25 + 23 + 20
41 = 0010 1001

du

on

g

th

an

co

ng

.c


n

cu
u

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

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

139
/>

NKK-HUST

Ví dụ 2

n

N = 1011 1001

ng

M = 0001 0010

co

n


.c

om

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

an

n

g

th

Xác định giá trị của chúng ?

du

on

Giải:

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

n

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


cu
u

n

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

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

140
/>

NKK-HUST

Với n = 8 bit

om

Biểu diễn được các giá trị từ 0 đến 255 (28 - 1)
Biểu diễn
nhị phân
00000000
00000001
00000010
00000011
00000100
...
11111110

11111111

.c

Chúý:

co

ng

11111111

an

+ 00000001

g

cu
u

du

on

có nhớrangồi
(Carryout)

th


1 00000000

255+1=0???
dovượtrakhỏidảibiểudiễn

2017

Giá trị
thập phân
0
1
2
3
4
254
255

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

141
/>

NKK-HUST

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

om

Trục số học:


255

co

ng

.c

0 1 2 3

255 0

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

2
3

cu
u

du

on

g

th

an


254

1

2017

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

142
/>

NKK-HUST

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

n
n

.c

ng

co

= 255
= 256
= 65535


n
n

cu
u

du

n

an

n

= 0

th

n

0000 0000 0000 0000
...
0000 0000 1111 1111
0000 0001 0000 0000
...
1111 1111 1111 1111

g

n


om

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

on

n

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

2017

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

143
/>

NKK-HUST

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

.c

ng

Đị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) - A

n

Số bù hai của A

= 2n - A

du

on

g

th

n

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

cu
u

n

an

co

n


om

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

2017

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

144
/>

NKK-HUST

Ví dụ

- 0010 0101

(A)

an

1101 1010

(28 - 1)

ng

1111 1111


.c

Số bù một của A được tính như sau:

co

n

om

Với n = 8 bit, cho A = 0010 0101

g

th

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

on

n

cu
u

du

1 0000 0000

- 0010 0101

(28)
(A)

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

2017

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

145
/>

NKK-HUST

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

n

om

0010 0101
+ 1101 1011
1 0000 0000 = 0
(bỏ qua bit nhớ ra ngoài)
à Số bù hai của A = -A


cu
u

A
Số bù hai của A

ng

.c

Nhận xét:

=

0010 0101
1101 1010
+
1
1101 1011

co

Số bù hai của A

an

n

=
=


th

n

Cho
A
Số bù một của A

n

g

n

on

n

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) + 1
Ví dụ:

du

n

2017

=

=

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

146
/>

NKK-HUST

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

ng

.c

om

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

an

co

an−1an−2 ... a2 a1a0
th

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ởi số bù hai
của số dương tương ứng, vì vậy bit an-1 = 1

cu
u

n

du

on

g

n

2017

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

147
/>

NKK-HUST

Ví dụ
Biểu diễn các số ngun có dấu sau đây bằng
8-bit:
A = + 58 ; B = - 80

Giải:
A
= + 58
= 0011 1010
= - 80
Ta có: + 80
Số bù một

g

B

th

an

co

ng

.c

om

n

Vậy: B = - 80

= 1011 0000


cu
u

du

on

Số bù hai

= 0101 0000
= 1010 1111
+
1
= 1011 0000

2017

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

148
/>

NKK-HUST

Xác định giá trị của số dương

om

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


.c

n

an

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

th

n

co

ng

0 an-2 ... a2 a1 a0
g

n−2

cu
u

du

on

A = ∑ ai 2


n

i

i=0

Dải biểu diễn cho số dương: [0, +(2n-1 - 1)]

2017

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

149
/>

NKK-HUST

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

.c

n

om

Xác định giá trị của số âm

an


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

g

th

n

co

ng

1an−2 ... a2 a1a0

cu
u

du

on

A = −2
n

n−1

n−2

+ ∑ ai 2


i

Chứng minh?

i=0

Dải biểu diễn cho số âm: [- 2n-1, -1]

2017

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

150
/>

NKK-HUST

Công thức xác định giá trị số âm

.c

om

! = 1!!!!! !!!!! !… !!! !!! !!! !

co

ng


−! = 0!!!!! !!!!! … !! !!! !!! + 1!

!!!

g

th

an

= 11 … 111 − !!!!! !!!!! !… !!! !!! !!! + 1!

!! 2! + 1!

du

on

= (2!!! − 1) −

cu
u

!!!

!−2
!−1

! = −2


!

!! 2 !

+!
!=0

2017

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

151
/>

NKK-HUST

Cơng thức tổng qt cho số ngun có dấu

om

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

.c

n

an


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

th

n

co

ng

an-1an-2 ... a2 a1a0

n

+ ∑ ai 2

i

i=0

cu
u

du

on

g

A = −an−1 2


n−1

n−2

Dải biểu diễn: [-(2n-1), +(2n-1-1)]

2017

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

152
/>

NKK-HUST

Ví dụ

om

Hãy xác định giá trị của các số nguyên có dấu được
biểu diễn theo mã bù hai với 8-bit như dưới đây:
Q = 1101 1011

on

du

P = 0110 0010 = 26 + 25 + 21 = 64 + 32 + 2 = +98

Q = 1101 1011 = -27 + 26 + 24 + 23 + 21 + 20
= -128 + 64 + 16 + 8 + 2 + 1 = -37

cu
u

n

g

Giải:
n

co

n

an

P = 0110 0010

th

n

ng

.c

n


2017

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

153
/>

NKK-HUST

Với n = 8 bit

00000000

+1

00000001

+2

00000010

om
0

an

co


ng

-128 đến +127
Chỉ có một giá trị 0
Khơng biểu diễn cho giá trị
+128

g

th

§
§
§

Biểu diễn
bù hai

.c

§ Biểu diễn được các giá trị
từ -27 đến +27-1

Giá trị
thập phân

cu
u

du


on

Chú ý:
+127 + 1 = -128
(-128)+(-1) = +127
có tràn xảy ra (Overflow)
(do vượt ra khỏi dải biểu diễn)

2017

...
+126

01111110

+127

01111111

-128

10000000

-127

10000001
...

-2


1111 1110

-1

11111111

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

154
/>

NKK-HUST

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

om

Trục số học:
-128

+127

an

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

-1


0

+1

-2

+2

-3

+3

cu
u

du

on

g

th

n

co

ng

-2 -1 0 1 2


.c

n

-128

2017

+127

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

155
/>

NKK-HUST

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

n
n
n
n

n
n

.c


0
+1

ng

co

an

th

n

g

n

on

n

0000 0000 0000 0000 =
0000 0000 0000 0001 =
...
0111 1111 1111 1111 =
1000 0000 0000 0000 =
1000 0000 0000 0001 =
...
1111 1111 1111 1111 =


du

n

om

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

cu
u

n

+32767 (215 - 1)
-32768 (-215)
-32767
-1

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

2017

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

156
/>


NKK-HUST

Mở rộng bit cho số nguyên
Mở rộng theo số không dấu (Zero-extended):
thêm các bit 0 vào bên trái
n

ng

Mở rộng theo số có dấu (Sign-extended):
Số dương:

co

n

.c

om

n

0001 0011

th

an

+19 =


(16bit)

on

g

+19 = 0000 0000 0001 0011

(8bit)

Số âm:

cu
u

n

du

à thêm các bit 0 vào bên trái
- 19 =

1110 1101

- 19 = 1111 1111 1110 1101

(8bit)
(16bit)

à thêm các bit 1 vào bên trái

2017

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

157
/>

NKK-HUST

4.2. Thực hiện phép cộng/trừ với số nguyên

ng

.c

om

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

th

an

n bit

co


Y

Cin

g

Cout

n bit

cu
u

du

on

Bộ cộng n-bit
n bit
S

2017

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

158
/>


×