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