Nguyên tắc 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
out=0 Æ nhận được kết quả đúng.
Nếu C
out=1 Æ nhận được kết quả sai,
do tràn nhớ ra ngoài (Carry Out).
Tràn nhớ ra ngoài khi: tổng > (2n – 1)
Cộng số nguyên có dấu
Khi cộng hai số nguyên có dấu n-bit, kết quả
nhận được là n-bit và không cần quan tâm đến
bit C
out
Cộng hai số khác dấu: kết quả luôn luôn đúng.
Cộng hai 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ả bị sai.
Tràn xảy ra khi tổng nằm ngoài dải biểu diễn:
[ -(2n-1),+(2n-1-1)]
26 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 648 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Kiến trúc máy tính - Chương 3: Số học máy tính - Nguyễn kim Khánh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
đổi 0.81(10)
0.81 x 2 = 1.62 phần nguyên = 1
0.62 x 2 = 1.24 phần nguyên = 1
0.24 x 2 = 0.48 phần nguyên = 0
0.48 x 2 = 0.96 phần nguyên = 0
0.96 x 2 = 1.92 phần nguyên = 1
0.92 x 2 = 1.84 phần nguyên = 1
0.84 x 2 = 1.68 phần nguyên = 1
0.81(10) ≈ 0.1100111(2)
18 March 2007 Bài giảng Kiến trúc Máy tính 16
NKK-HUT
Chuyển đổi số lẻ thập phân sang nhị phân (tiếp)
Ví dụ 3: chuyển đổi 0.2(10)
0.2 x 2 = 0.4 phần nguyên = 0
0.4 x 2 = 0.8 phần nguyên = 0
0.8 x 2 = 1.6 phần nguyên = 1
0.6 x 2 = 1.2 phần nguyên = 1
0.2 x 2 = 0.4 phần nguyên = 0
0.4 x 2 = 0.8 phần nguyên = 0
0.8 x 2 = 1.6 phần nguyên = 1
0.6 x 2 = 1.2 phần nguyên = 1
0.2(10) ≈ 0.00110011 (2)
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 5
18 March 2007 Bài giảng Kiến trúc Máy tính 17
NKK-HUT
3. Hệ mười sáu (Hexa)
Cơ số 16
16 chữ số: 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F
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
18 March 2007 Bài giảng Kiến trúc Máy tính 18
NKK-HUT
Quan hệ giữa số nhị phân và số Hexa
F1111
E1110
D1101
C1100
B1011
A1010
91001
81000
70111
60110
50101
40100
30011
20010
10001
00000
Chữ số Hexa4-bit
Ví dụ chuyển đổi số nhị phân Æ số Hexa:
1011 00112 = B316
0000 00002 = 0016
0010 1101 1001 10102 = 2D9A16
1111 1111 1111 11112 = FFFF16
18 March 2007 Bài giảng Kiến trúc Máy tính 19
NKK-HUT
3.2. Mã hóa và lưu trữ dữ liệu trong máy tính
Mọi dữ liệu đưa vào máy tính đều phải
được mã hóa thành số nhị phân
Các loại dữ liệu
Dữ liệu nhân tạo: do con người qui ước
Dữ liệu tự nhiên: tồn tại khách quan với
con người
1. Nguyên tắc chung về mã hóa dữ liệu
18 March 2007 Bài giảng Kiến trúc Máy tính 20
NKK-HUT
Mã hoá dữ liệu nhân tạo
Mã hóa theo các chuẩn qui ước
Dữ liệu số:
Số nguyên: mã hóa theo một số chuẩn
Số thực: mã hóa bằng số dấu phẩy động
Dữ liệu ký tự: mã hóa theo bộ mã ký tự
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 6
18 March 2007 Bài giảng Kiến trúc Máy tính 21
NKK-HUT
Mã hóa và tái tạo tín hiệu vật lý
Các dữ liệu vật lý thông dụng
Âm thanh
Hình ảnh
18 March 2007 Bài giảng Kiến trúc Máy tính 22
NKK-HUT
Độ dài từ dữ liệu
Độ dài từ dữ liệu là số bit được sử dụng
để mã hóa loại dữ liệu tương ứng
Thường là bội của 8-bit
VD: 8, 16, 32, 64 bit
18 March 2007 Bài giảng Kiến trúc Máy tính 23
NKK-HUT
2. Thứ tự lưu trữ các byte trong bộ nhớ chính
Bộ nhớ chính thường tổ chức theo byte
Hai cách lưu trữ dữ liệu nhiều byte:
Đầu nhỏ (Little-endian): Byte có ý nghĩa
thấp được lưu trữ ở ngăn nhớ có địa chỉ
nhỏ, byte có ý nghĩa cao được lưu trữ ở
ngăn nhớ có địa chỉ lớn.
Đầu to (Big-endian): Byte có ý nghĩa cao
được lưu trữ ở ngăn nhớ có địa chỉ nhỏ,
byte có ý nghĩa thấp được lưu trữ ở ngăn
nhớ có địa chỉ lớn.
18 March 2007 Bài giảng Kiến trúc Máy tính 24
NKK-HUT
Ví dụ lưu trữ dữ liệu 32-bit
0001 1010 0010 1011 0011 1100 0100 1101
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 7
18 March 2007 Bài giảng Kiến trúc Máy tính 25
NKK-HUT
Lưu trữ của các bộ xử lý điển hình
Intel 80x86 và các Pentium: little-endian
Motorola 680x0, SunSPARC: big-endian
Power PC, Itanium: bi-endian
18 March 2007 Bài giảng Kiến trúc Máy tính 26
NKK-HUT
3.3. Biểu diễn số nguyên
Số nguyên không dấu (Unsigned Integer)
Số nguyên có dấu (Signed Integer)
18 March 2007 Bài giảng Kiến trúc Máy tính 27
NKK-HUT
1. Biểu diễn số nguyên không dấu
Giá trị của A được tính như sau:
i
n
i
iaA 2
1
0
∑−
=
=
Nguyên tắc tổng quát: Dùng n bit biểu diễn số
nguyên không dấu A:
01221 aaa...aa nn −−
Dải biểu diễn của A: từ 0 đến 2n – 1
18 March 2007 Bài giảng Kiến trúc Máy tính 28
NKK-HUT
Các ví dụ
Ví dụ 1. Biểu diễn các số nguyên 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
B = 150 = 128 + 16 + 4 + 2 = 27 + 24 + 22 + 21
150 = 1001 0110
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 8
18 March 2007 Bài giảng Kiến trúc Máy tính 29
NKK-HUT
Các ví dụ (tiếp)
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
= 128 + 32 + 16 + 8 + 1 = 185
18 March 2007 Bài giảng Kiến trúc Máy tính 30
NKK-HUT
Với n = 8 bit
0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
...
1111 1111 = 255
Biểu diễn được các giá trị từ 0 đến 255
Chú ý:
1111 1111
+ 0000 0001
1 0000 0000
Vậy: 255 + 1 = 0 ?
Æ do tràn nhớ ra
ngoài
18 March 2007 Bài giảng Kiến trúc Máy tính 31
NKK-HUT
Trục số học với n = 8 bit
Trục số học:
Trục số học máy tính:
18 March 2007 Bài giảng Kiến trúc Máy tính 32
NKK-HUT
Với n = 16 bit, 32 bit, 64 bit
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
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 9
18 March 2007 Bài giảng Kiến trúc Máy tính 33
NKK-HUT
2. Biểu diễn số nguyên có dấu
a. Số bù chín và Số bù mười
Cho một số thập phân A được biểu diễn
bằng n chữ số thập phân, ta có:
Số bù chín của A = (10n-1) – A
Số bù mười của A = 10n – A
Số bù mười của A = (Số bù chín của A) +1
18 March 2007 Bài giảng Kiến trúc Máy tính 34
NKK-HUT
Số bù chín và Số bù mười (tiếp)
Ví dụ: với n=4, cho A = 3265
Số bù chín của A:
9999 (104-1)
- 3265 (A)
6734
Số bù mười của A:
10000 (104)
- 3265 (A)
6735
18 March 2007 Bài giảng Kiến trúc Máy tính 35
NKK-HUT
b. Số bù một và Số bù hai
Đị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
Số bù hai của A = 2n – A
Số bù hai của A = (Số bù một của A) +1
18 March 2007 Bài giảng Kiến trúc Máy tính 36
NKK-HUT
Số bù một và Số bù hai (tiếp)
Ví dụ: với n = 8 bit, cho A = 0010 0101
Số bù một của A được tính như sau:
1111 1111 (28-1)
- 0010 0101 (A)
1101 1010
Æ đảo các bit của A
Số bù hai của A được tính như sau:
1 0000 0000 (28)
- 0010 0101 (A)
1101 1011
Æ thực hiện khó khăn
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 10
18 March 2007 Bài giảng Kiến trúc Máy tính 37
NKK-HUT
Quy tắc tìm Số bù một và Số bù hai
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ụ:
Cho A = 0010 0101
Số bù một = 1101 1010
+ 1
Số bù hai = 1101 1011
Nhận xét:
A = 0010 0101
Số bù hai = + 1101 1011
1 0000 0000 = 0
(bỏ qua bit nhớ ra ngoài)
Æ Số bù hai của A = -A
18 March 2007 Bài giảng Kiến trúc Máy tính 38
NKK-HUT
c. Biểu diễn số nguyên có dấu bằng mã bù hai
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ằng số bù hai
của số dương tương ứng, vì vậy bit an-1 = 1
01221 aaa...aa nn −−
Nguyên tắc tổng quát: Dùng n bit biểu diễn số
nguyên có dấu A:
18 March 2007 Bài giảng Kiến trúc Máy tính 39
NKK-HUT
Biểu diễn số dương
0122n aaa...a0 −
i
n
i
iaA 2
2
0
∑−
=
=
Giá trị của số dương A:
Dạng tổng quát của số dương A:
Dải biểu diễn cho số dương: 0 đến 2n-1-1
18 March 2007 Bài giảng Kiến trúc Máy tính 40
NKK-HUT
Biểu diễn số âm
0122n aaa...a1 −
Dạng tổng quát của số âm A:
i
n
i
i
n aA 22
2
0
1 ∑−
=
− +−=
Giá trị của số âm A:
Dải biểu diễn cho số âm: -1 đến -2n-1
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 11
18 March 2007 Bài giảng Kiến trúc Máy tính 41
NKK-HUT
Biểu diễn tổng quát cho số nguyên có dấu
01221 aaa...aa nn −−
Dạng tổng quát của số nguyên A:
i
n
i
i
n
n aaA 22
2
0
1
1 ∑−
=
−
− +−=
Giá trị của A được xác định như sau:
Dải biểu diễn: từ -(2n-1) đến +(2n-1-1)
18 March 2007 Bài giảng Kiến trúc Máy tính 42
NKK-HUT
Các ví dụ
Ví dụ 1. Biểu diễn các số nguyên có dấu sau
đây bằng 8-bit:
A = +58 ; B = -80
Giải:
A = +58 = 0011 1010
B = -80
Ta có: + 80 = 0101 0000
Số bù một = 1010 1111
+ 1
Số bù hai = 1011 0000
Vậy: B = -80 = 1011 0000
18 March 2007 Bài giảng Kiến trúc Máy tính 43
NKK-HUT
Các ví dụ
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
18 March 2007 Bài giảng Kiến trúc Máy tính 44
NKK-HUT
Với n = 8 bit
0000 0000 = 0
0000 0001 = +1
0000 0010 = +2
0000 0011 = +3
...
0111 1111 = +127
1000 0000 = - 128
1000 0001 = - 127
...
1111 1110 = -2
1111 1111 = -1
Biểu diễn được các giá trị từ -128 đến +127
Chú ý:
+127 + 1 = -128
-128 - 1 = +127
Æ do tràn xảy ra
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 12
18 March 2007 Bài giảng Kiến trúc Máy tính 45
NKK-HUT
Trục số học số nguyên có dấu với n = 8 bit
Trục số học:
Trục số học máy tính:
18 March 2007 Bài giảng Kiến trúc Máy tính 46
NKK-HUT
Với n = 16 bit, 32 bit, 64 bit
Với n=16bit: 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=32bit: biểu diễn từ -231 đến 231-1
Với n=64bit: biểu diễn từ -263 đến 263-1
18 March 2007 Bài giảng Kiến trúc Máy tính 47
NKK-HUT
Chuyển đổi từ byte thành word
Đối với số dương:
+19 = 0001 0011 (8bit)
+19 = 0000 0000 0001 0011 (16bit)
Æ thêm 8 bit 0 bên trái
Đối với số âm:
- 19 = 1110 1101 (8bit)
- 19 = 1111 1111 1110 1101 (16bit)
Æ thêm 8 bit 1 bên trái
18 March 2007 Bài giảng Kiến trúc Máy tính 48
NKK-HUT
3. Biểu diễn số nguyên theo mã BCD
Binary Coded Decimal Code
Dùng 4 bit để mã hóa cho các chữ số
thập phân từ 0 đến 9:
0 Æ 0000 5 Æ 0101
1Æ 0001 6 Æ 0110
2 Æ 0010 7 Æ 0111
3 Æ 0011 8 Æ 1000
4 Æ 0100 9 Æ 1001
còn 6 tổ hợp không sử dụng:
1010, 1011, 1100, 1101, 1110, 1111
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 13
18 March 2007 Bài giảng Kiến trúc Máy tính 49
NKK-HUT
Ví dụ số BCD
35 Æ 0011 0101BCD
61 Æ 0110 0001BCD
1087 Æ 0001 0000 1000 0111BCD
9640 Æ 1001 0110 0100 0000BCD
18 March 2007 Bài giảng Kiến trúc Máy tính 50
NKK-HUT
Các kiểu lưu trữ số BCD
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:
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:
18 March 2007 Bài giảng Kiến trúc Máy tính 51
NKK-HUT
Phép cộng số BCD
35 Æ 0011 0101BCD
+ 61 Æ + 0110 0001BCD
96 Å 1001 0110BCD
kết quả đúng (không phải hiệu chỉnh)
87 Æ 1000 0111BCD
+ 96 Æ + 1001 0110BCD
183 1 0001 1101 Æ kết quả sai
+ 0110 0110 Å hiệu chỉnh
0001 1000 0011BCD Ækết quả đúng
1 8 3
Hiệu chỉnh: cộng thêm 6 ở những vị trí có nhớ (>9)
18 March 2007 Bài giảng Kiến trúc Máy tính 52
NKK-HUT
3.4. Thực hiện các phép toán số học với số nguyên
1. Phép cộng số nguyên không dấu
Bộ cộng n-bit
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 14
18 March 2007 Bài giảng Kiến trúc Máy tính 53
NKK-HUT
Nguyên tắc 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 Cout=0 Æ nhận được kết quả đúng.
Nếu Cout=1 Æ nhận được kết quả sai,
do tràn nhớ ra ngoài (Carry Out).
Tràn nhớ ra ngoài khi: tổng > (2n – 1)
18 March 2007 Bài giảng Kiến trúc Máy tính 54
NKK-HUT
Ví dụ cộng số nguyên không dấu
57 = 0011 1001
+ 34 = + 0010 0010
91 0101 1011 = 64+16+8+2+1=91 Æ đúng
209 = 1101 0001
+ 73 = + 0100 1001
282 1 0001 1010
0001 1010 = 16+8+2=26 Æ sai
Æ có tràn nhớ ra ngoài (Cout=1)
Để có kết quả đúng ta thực hiện cộng theo 16-bit:
209 = 0000 0000 1101 0001
+ 73 = + 0000 0000 0100 1001
0000 0001 0001 1010 = 256+16+8+2 = 282
18 March 2007 Bài giảng Kiến trúc Máy tính 55
NKK-HUT
2. Phép đảo dấu
Ta có:
+ 37 = 0010 0101
bù một = 1101 1010
+ 1
bù hai = 1101 1011 = -37
Lấy bù hai của số âm:
- 37 = 1101 1011
bù một = 0010 0100
+ 1
bù hai = 0010 0101 = +37
Kết luận: Phép đảo dấu trong máy tính thực chất là
lấy bù hai
18 March 2007 Bài giảng Kiến trúc Máy tính 56
NKK-HUT
3. Cộng số nguyên có dấu
Khi cộng hai số nguyên có dấu n-bit, kết quả
nhận được là n-bit và không cần quan tâm đến
bit Cout.
Cộng hai số khác dấu: kết quả luôn luôn đúng.
Cộng hai 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ả bị sai.
Tràn xảy ra khi tổng nằm ngoài dải biểu diễn:
[ -(2n-1),+(2n-1-1)]
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 15
18 March 2007 Bài giảng Kiến trúc Máy tính 57
NKK-HUT
Ví dụ cộng số nguyên có dấu không tràn
( + 70) = 0100 0110
+ ( + 42) = 0010 1010
+ 112 0111 0000 = +112
(+ 97) = 0110 0001
+ (- 52) = 1100 1100 (+52=0011 0100)
+ 45 1 0010 1101 = +45
( - 90) = 1010 0110 (+90=0101 1010)
+ ( +36) = 0010 0100
- 54 1100 1010 = - 54
( - 74) = 1011 0110 (+74=0100 1010)
+( - 30) = 1110 0010 (+30=0001 1110)
-104 1 1001 1000 = -104
18 March 2007 Bài giảng Kiến trúc Máy tính 58
NKK-HUT
Ví dụ cộng số nguyên có dấu bị tràn
( + 75) = 0100 1011
+( + 82) = 0101 0010
+157 1001 1101
= - 128+16+8+4+1= -99 Æ sai
( - 104) = 1001 1000 (+104=0110 1000)
+ ( - 43) = 1101 0101 (+ 43 =0010 1011)
- 147 1 0110 1101
= 64+32+8+4+1= +109 Æ sai
Cả hai ví dụ đều tràn vì tổng nằm ngoài dải
biểu diễn [-128, +127]
18 March 2007 Bài giảng Kiến trúc Máy tính 59
NKK-HUT
4. Nguyên tắc thực hiện phép trừ
Phép trừ hai 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
18 March 2007 Bài giảng Kiến trúc Máy tính 60
NKK-HUT
5. Nhân số nguyên không dấu
1011 Số bị nhân (11)
x 1101 Số nhân (13)
1011
0000 Các tích riêng phần
1011
1011
10001111 Tích (143)
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 16
18 March 2007 Bài giảng Kiến trúc Máy tính 61
NKK-HUT
Nhân số nguyên không dấu (tiếp)
Các tích riêng phần được xác định như sau:
Nếu bit của số nhân bằng 0 Æ tích riêng phần bằng 0.
Nếu bit của số nhân bằng 1 Æ tích riêng phần bằng số
bị nhân.
Tích riêng phần tiếp theo được dịch trái một bit so với
tích riêng phần trước đó.
Tích bằng tổng các tích riêng phần
Nhân hai số nguyên n-bit, tích có độ dài 2n bit
(không bao giờ tràn).
18 March 2007 Bài giảng Kiến trúc Máy tính 62
NKK-HUT
Bộ nhân số nguyên không dấu
18 March 2007 Bài giảng Kiến trúc Máy tính 63
NKK-HUT
Lưu đồ nhân số nguyên không dấu
18 March 2007 Bài giảng Kiến trúc Máy tính 64
NKK-HUT
Ví dụ nhân số nguyên không dấu
Số bị nhân M = 1011 (11)
Số nhân Q = 1101 (13)
Tích = 1000 1111 (143)
C A Q
0 0000 1101 Các giá trị khởi đầu
+ 1011
0 1011 1101 A ← A + M
0 0101 1110 Dịch phải
0 0010 1111 Dịch phải
+ 1011
0 1101 1111 A ← A + M
0 0110 1111 Dịch phải
+ 1011
1 0001 1111 A ← A + M
0 1000 1111 Dịch phải
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 17
18 March 2007 Bài giảng Kiến trúc Máy tính 65
NKK-HUT
6. Nhân số nguyên có dấu
Sử dụng thuật giải nhân không dấu
Sử dụng thuật giải Booth
18 March 2007 Bài giảng Kiến trúc Máy tính 66
NKK-HUT
Sử dụng thuật giải nhân không dấu
Bước 1. Chuyển đổi số bị nhân và số
nhân thành số dương tương ứng
Bước 2. Nhân hai số dương bằng thuật
giải nhân số nguyên không dấu, được
tích của hai số dương.
Bước 3. 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ả ở bước 2.
Nếu hai thừa số ban đầu là khác dấu thì đảo
dấu kết quả của bước 2.
18 March 2007 Bài giảng Kiến trúc Máy tính 67
NKK-HUT
Thuật giải Booth B¾t ®Çu
A := 0, Q-1 := 0
M := Sè bÞ nh©n
Q := Sè nh©n
Bé ®Õm := n
Bé ®Õm = 0 ?
KÕt thóc
=01=10
Q0,Q-1 = ?
A := A + M
DÞch ph¶i sè häc A,Q,Q-1
Bé ®Õm:=Bé ®Õm-1
Yes
No
A := A - M =00
=11
18 March 2007 Bài giảng Kiến trúc Máy tính 68
NKK-HUT
7. Chia số nguyên không dấu
Số bị chia 10010011 1011 Số chia
1011 00001101 Thương
001110
1011
001111
1011
100 Phần dư
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 18
18 March 2007 Bài giảng Kiến trúc Máy tính 69
NKK-HUT
Bộ chia số nguyên không dấu
18 March 2007 Bài giảng Kiến trúc Máy tính 70
NKK-HUT
Lưu đồ chia số nguyên không dấu
18 March 2007 Bài giảng Kiến trúc Máy tính 71
NKK-HUT
8. Chia số nguyên có dấu
Bước 1. Chuyển đổi số bị chia và số chia về thành số
dương tương ứng.
Bước 2. Sử dụng thuật giải chia số nguyên không dấu để
chia hai số dương, kết quả nhận được là thương Q và
phần dư R đều là dương
Bước 3. Hiệu chỉnh dấu của kết quả như sau:
(Lưu ý: phép đảo dấu thực chất là thực hiện phép lấy bù hai)
đảo dấuđảo dấudươngâm
giữ nguyêngiữ nguyêndươngdương
đảo dấugiữ nguyênâmâm
giữ nguyênđảo dấuâmdương
Số dưThươngSố chiaSố bị chia
18 March 2007 Bài giảng Kiến trúc Máy tính 72
NKK-HUT
3.5. Số dấu phẩy động
1. Nguyên tắc chung
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 kiểu số dấu phẩy động như sau:
X = M * RE
M là phần định trị (Mantissa),
R là cơ số (Radix),
E là phần mũ (Exponent).
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 19
18 March 2007 Bài giảng Kiến trúc Máy tính 73
NKK-HUT
2. Chuẩn IEEE754/85
Cơ số R = 2
Các dạng:
Dạng 32-bit
Dạng 44-bit
Dạng 64-bit
Dạng 80-bit
18 March 2007 Bài giảng Kiến trúc Máy tính 74
NKK-HUT
Các dạng biểu diễn chính
18 March 2007 Bài giảng Kiến trúc Máy tính 75
NKK-HUT
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 gọi là là độ lệch (bias)
m (23 bit) là phần lẻ của phần định trị M:
M = 1.m
Công thức xác định giá trị của số thực:
X = (-1)S*1.m * 2e-127
18 March 2007 Bài giảng Kiến trúc Máy tính 76
NKK-HUT
Ví dụ 1
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
Vậy
X = -1.10101100 * 23 = -1101.011 = -13.375
0011 1111 1000 0000 0000 0000 0000 0000 = ?
= +1.0
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 20
18 March 2007 Bài giảng Kiến trúc Máy tính 77
NKK-HUT
Ví dụ 2
Biểu diễn số thực X= 83.75 về dạng số dấu phẩy
động IEEE754 32-bit
Giải:
X = 83.75(10) = 1010011.11(2) = 1.01001111 x 26
Ta có:
S = 0 vì đây là số dương
E = e-127 = 6 Æ e = 127 + 6 = 133(10) = 1000 0101(2)
Vậy:
X = 0100 0010 1010 0111 1000 0000 0000 0000
18 March 2007 Bài giảng Kiến trúc Máy tính 78
NKK-HUT
Ví dụ 3
Biểu diễn số thực X= -0,2 về dạng số dấu phẩy
động IEEE754 32-bit
Giải:
X = -0,2(10) = - 0.00110011...0011...(2) =
= - 1.100110011..0011... x 2-3
Ta có:
S = 1 vì đây là số âm
E = e-127 = -3 Æ e = 127 -3 = 124(10) = 0111 1100(2)
Vậy:
X = 1011 1110 0100 1100 1100 1100 1100 1100
18 March 2007 Bài giảng Kiến trúc Máy tính 79
NKK-HUT
Bài tập
Biểu diễn các số thực sau đây về dạng số
dấu phẩy động IEEE754 32-bit:
X = - 27.0625; Y = 1/32
18 March 2007 Bài giảng Kiến trúc Máy tính 80
NKK-HUT
Các qui ước đặc biệt
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 = ± ∞
x111 1111 1000 0000 0000 0000 0000 0000Æ X =± ∞
Các bit của e bằng 1, còn m có ít nhất một bit bằng 1, thì
nó không biểu diễn cho số nào cả (NaN - not a number)
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 21
18 March 2007 Bài giảng Kiến trúc Máy tính 81
NKK-HUT
Dải giá trị biểu diễn
2-127 đến 2+127
10-38 đến 10+38
18 March 2007 Bài giảng Kiến trúc Máy tính 82
NKK-HUT
Dạng 64-bit
S là bit dấu
e (11 bit): mã excess-1023 của phần
mũ E Æ E = e – 1023
m (52 bit): phần lẻ của phần định trị M
Giá trị số thực:
X = (-1)S*1.m * 2e-1023
Dải giá trị biểu diễn: 10-308 đến 10+308
18 March 2007 Bài giảng Kiến trúc Máy tính 83
NKK-HUT
Dạng 80-bit
S là bit dấu
e (15 bit): mã excess-16383 của phần
mũ E Æ E = e – 16383
m (64 bit): phần lẻ của phần định trị M
Giá trị số thực:
X = (-1)S*1.m * 2e-16383
Dải giá trị biểu diễn: 10-4932 đến 10+4932
18 March 2007 Bài giảng Kiến trúc Máy tính 84
NKK-HUT
3.Thực hiện phép toán số dấu phẩy động
X1 = M1 * RE1
X2 = M2 * RE2
Ta có
X1 * X2 = (M1* M2) * RE1+E2
X1 / X2 = (M1 / M2) * RE1-E2
X1 ± X2 = (M1*RE1-E2 ± M2) * RE2 , với E2 ≥ E1
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 22
18 March 2007 Bài giảng Kiến trúc Máy tính 85
NKK-HUT
Các khả năng tràn số
Tràn trên số mũ (Exponent Overflow): mũ
dương vượt ra khỏi giá trị cực đại của số mũ
dương có thể. (Æ ∞)
Tràn dưới số mũ (Exponent Underflow): mũ âm
vượt ra khỏi giá trị cực đại của số mũ âm có thể
(Æ 0).
Tràn trên phần định trị (Mantissa Overflow):
cộng hai phần định trị có cùng dấu, kết quả bị
nhớ ra ngoài bit cao nhất.
Tràn dưới phần định trị (Mantissa Underflow):
Khi hiệu chỉnh phần định trị, các số bị mất ở bên
phải phần định trị.
18 March 2007 Bài giảng Kiến trúc Máy tính 86
NKK-HUT
Phép cộng và phép trừ
Kiểm tra các số hạng có bằng 0 hay
không
Hiệu chỉnh phần định trị
Cộng hoặc trừ phần định trị
Chuẩn hoá kết quả
18 March 2007 Bài giảng Kiến trúc Máy tính 87
NKK-HUT
Thuật toán cộng/trừ số dấu phẩy động
18 March 2007 Bài giảng Kiến trúc Máy tính 88
NKK-HUT
Thuật toán nhân số dấu phẩy động
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 23
18 March 2007 Bài giảng Kiến trúc Máy tính 89
NKK-HUT
Thuật toán chia số dấu phẩy động
18 March 2007 Bài giảng Kiến trúc Máy tính 90
NKK-HUT
3.6. Biểu diễn ký tự
Bộ mã ASCII (American Standard Code
for Information Interchange)
Bộ mã Unicode
18 March 2007 Bài giảng Kiến trúc Máy tính 91
NKK-HUT
1. Bộ mã ASCII
Do ANSI (American National Standard
Institute) thiết kế
Bộ mã 8-bit Æ có thể mã hóa được 28
ký tự, có mã từ: 0016 ÷ FF16 , trong đó:
128 ký tự chuẩn có mã từ 0016 ÷ 7F16
128 ký tự mở rộng có mã từ 8016 ÷ FF16
18 March 2007 Bài giảng Kiến trúc Máy tính 92
NKK-HUT
Các ký tự chuẩn
Các ký tự hiển thị chuẩn:
Các chữ cái Latin
Các chữ số thập phân
các dấu câu: . , : ; ...
các dấu phép toán: + - * / % ...
một số ký hiệu thông dụng: &, $,@, #
dấu cách
Các mã điều khiển
Các mã điều khiển định dạng văn bản
Các mã điều khiển truyền số liệu
Các mã điều khiển phân tách thông tin
Các mã điều khiển khác
Bài giảng Kiến trúc máy tính 18 March 2007
Nguyễn Kim Khánh - ĐHBKHN 24
18 March 2007 Bài giảng Kiến trúc Máy tính 93
NKK-HUT
127
o
111
-
95
O
79
?
63
/
47
31
15F
~
126
n
110
^
94
N
78
>
62
.
46
30
14E
}
125
m
109
]
93
M
77
=
61
-
45
29
13D
|
124
l
108
\
92
L
76
<
60
,
44
28
12C
{
123
k
107
[
91
K
75
;
59
+
43
27
11B
z
122
j
106
Z
90
J
74
:
58
*
42
26
10A
y
121
i
105
Y
89
I
73
9
57
)
41
25
99
x
120
h
104
X
88
H
72
8
56
(
40
24
88
w
119
g
103
W
87
G
71
7
55
'
39
23
77
v
118
f
102
V
86
F
70
6
54
&
38
22
66
u
117
e
101
U
85
E
69
5
53
%
37
21
55
t
116
d
100
T
84
D
68
4
52
$
36
20
44
s
115
c
99
S
83
C
67
3
51
#
35
19
33
r
114
b
98
R
82
B
66
2
50
"
34
18
22
q
113
a
97
Q
81
A
65
1
49
!
33
17
11
p
112
`
96
P
80
@
64
0
48
32
16
00
76543210HEXA
18 March 2007 Bài giảng Kiến trúc Máy tính 94
NKK-HUT
Các ký tự hiển thị chuẩn
26 chữ cái hoa ‘A’ đến ‘ Z’ có mã từ 41(16) đến 5A(16)
(65 đến 90):
'A' Æ 0100 0001 = 41(16)
'B' Æ 0100 0010 = 42(16)
'C' Æ 0100 0011 = 43(16)
. . .
'Z' Æ 0101 1010 = 5A(16)
26 chữ cái thường ‘a’ đến ‘z’ có mã từ 61(16) đến
7A(16) (97 đến 122):
'a' Æ 0110 0001 = 61(16)
'b' Æ 0110 0010 = 62(16)
'c' Æ 0110 0011 = 63(16)
. . .
'z' Æ 0111 1010 = 7A(16)
18 March 2007 Bài giảng Kiến trúc Máy tính 95
NKK-HUT
Các ký tự hiển thị chuẩn (tiếp)
10 chữ số thập phân từ ‘0’ đến ‘9’ có
mã từ 30(16) đến 39(16) (48 đến 57):
'0' Æ 0011 0000 = 30(16)
'1' Æ 0011 0001 = 31(16)
‘2' Æ 0011 0010 = 32(16)
. . .
'9' Æ 0011 1001 = 39(16)
18 March 2007 Bài giảng Kiến trúc Máy tính 96
NKK-HUT
Các ký tự hiển thị chuẩn (tiếp)
Các ký hiệu khác:
các dấu câu: . , : ; ...
các dấu phép toán: + - * / % ...
một số ký hiệu thông dụng: &, $,@, #
dấu c
Các file đính kèm theo tài liệu này:
- bai_giang_kien_truc_may_tinh_chuong_3_so_hoc_may_tinh_nguyen.pdf