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 - Nguyễn Kim Khánh

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.99 MB, 60 trang )

NKK-HUST

.c
om

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

cu

u

du
o

ng

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
o

ng

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

.c
om

Nội dung chương 4

cu

u

du

o

ng

th

an

co

ng

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

ng

cu


u

du
o

ng

th

an

n

Số ngun khơng dấu (Unsigned Integer)
Số ngun có dấu (Signed Integer)

co

n

.c
om

4.1. Biểu diễn số nguyê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
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
om

n

an

co

ng

an−1an−2 ... a2 a1a0
n−1

A = ∑ ai 2

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

i


i=0

cu

u

du
o

ng

th

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

[0, 2n – 1]

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

138
/>

NKK-HUST

Ví dụ 1

.c
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
o

ng

th

an

co

ng

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

du
o

Giải:

ng

th

Xác định giá trị của chúng ?
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

.c
om

Biểu diễn được các giá trị từ 0 đến 255 (28 - 1)
Chúý:

00000001

1

00000010

2

00000011

3

00000100

4


co

ng

th

an

+ 00000001
1 00000000

Giá trị
thập phân
0

ng

11111111

Biểu diễn
nhị phân
00000000

cu

u

du
o


có nhớrangồi
(Carryout)

...

dovượtrakhỏidảibiểudiễn

11111110

254

11111111

255

255+1=0???

2017

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

141
/>

NKK-HUST

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

.c

om

Trục số học:

255

ng

0 1 2 3

co
an

254

1

2
3

cu

u

du
o

ng

th


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

255 0

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

n
n

ng

= 0

an

co


= 255
= 256

th

n

ng

n

du
o

n

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

= 65535

u

n


.c
om

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

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

cu

n

2017

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

143
/>

NKK-HUST

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

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

du
o

ng

th

n

= 2n - A

u

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

cu

n

an

co

n

.c

om

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

2017

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

144
/>

NKK-HUST

Ví dụ
Số bù một của A được tính như sau:
- 0010 0101

(A)

an

1101 1010

(28 - 1)

ng

1111 1111


co

n

.c
om

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

Số bù hai của A được tính như sau:
1 0000 0000

(28)

u

du
o

n

ng

th

à đảo các bit của A

(A)

cu


- 0010 0101
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

.c
om

Nhận xét:

=

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

Số bù hai của A

0010 0101
1101 1010
+
1
1101 1011

co

n

=
=

an

n


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

n

th

n

ng

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
o

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
o

ng

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

ng

B

th

an

co

ng

.c
om

n

Vậy: B = - 80

= 1011 0000

cu

u

du
o


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
Dạng tổng quát của số dương:

.c
om

n

an

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


ng

th

n

co

ng

0 an-2 ... a2 a1 a0
n−2

cu

u

du
o

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

Xác định giá trị của số âm
Dạng tổng quát của số âm:

.c
om

n

an

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

ng

th

n

co


ng

1an−2 ... a2 a1a0

+ ∑ ai 2

i

Chứng minh?

i=0

cu

u

du
o

A = −2

n−1

n−2

n

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!!!!! !!!!! !… !!! !!! !!! !

ng

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

!!!

ng

th

an

co


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

du
o

= (2!!! − 1) −
!!!

u
cu

!−1

! = −2

!! 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
Dạng tổng quát của số nguyên có dấu A:

.c
om

n

an

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

th

n

co

ng

an-1an-2 ... a2 a1a0


+ ∑ ai 2

i

i=0

n

cu

u

du
o

ng

A = −an−1 2

n−1

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ụ

n

Q = 1101 1011

du
o

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

u

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

cu

n

ng

Giải:
n

co


P = 0110 0010

an

n

ng

.c
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:

th

n

2017

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

153
/>

NKK-HUST

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


Giá trị
thập phân

Biểu diễn
bù hai

0

00000000

+1

00000001

+2

00000010
...

an

co

ng

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


ng

th

§
§
§

.c
om

Với n = 8 bit

cu

u

du
o

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

n

Trục số học:
-128

+127

an

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

-2

-1

0

+1

-3

+2
+3

cu

u


du
o

ng

th

n

co

ng

-2 -1 0 1 2

.c
om

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

-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

0
+1

ng

co

cu

n

an

n

th


n

ng

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
o

n

.c
om

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

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

.c
om

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

ng

n

Mở rộng theo số không dấu (Zero-extended):

thêm các bit 0 vào bên trái
Số dương:

co

n

0001 0011

th

an

+19 =

ng

+19 = 0000 0000 0001 0011

(8bit)
(16bit)

u

Số âm:

cu

n


du
o

à 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

ng

Cout

Cin

u

du
o

Bộ cộng n-bit

n bit


cu

n bit
S

2017

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

158
/>

×