KTMT Bai 3
KTMT Bai 3
2
Đơn vị xử lý số học và logic ALU
3
ĐẠI HỌC BÁCH KHOA HÀ NỘI
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
CH3
3.1. Biểu diễn số nguyên (Integer Representation)
3.2. Các phép tính với số nguyên (Integer Arithmetic)
3.3. Biểu diễn số dấu phẩy động (Floating-Point Representation)
3.4. Các phép tính dấu phẩy động (Floating-Point Arithmetic)
4
3.1. Biểu diễn số nguyên
5
Số nguyên không dấu
• C=26+24+23+22=64+16+8+4=92
Số nguyên không dấu
8
Số nguyên không dấu
Trục số học với N = 8 bit
Trục số học
9
Số nguyên có dấu
Trục số học với N = 8 bit
Trục số học :
10
Số nguyên không dấu
N = 16, 32, 64 bit
n = 16 bit
• 0000 0000 0000 0000 = 0
• …..
• 1111 1111 1111 1111 = 65535
11
3.1. Biểu diễn số nguyên
12
Số nguyên có dấu
13
Số nguyên có dấu
Biểu diễn dấu lượng Sign-Magnitude
•giá trị 0:
14
Số nguyên có dấu
Biểu diễn bù 1
Ví dụ
Với n = 8 bit, cho
tìm số bù 1 của A: 1
1111 1111
0011 0100
1100 1011
=> là đảo bit của A
n=8bit, Tìm dạng biểu diễn bù 1 của -9
16
Số nguyên có dấu
Biểu diễn bù 2
Ví dụ
•8 bit, số dương A = 0011 0100 = 5210
số bù 1 = 1100 1011 - lật bit
số bù 2 = 1100 1011 + 1 = 1100 1100
•Số âm B = 1100 1100 => xác định số thập phân
số bù 1 = 0011 0011 - lật bit
số bù 2 = 0011 0011 + 1 = 0011 0100
18
Số nguyên có dấu
Giá trị
19
Số nguyên có dấu
Giá trị
VD: 7 5 4 2
20
Số nguyên có dấu
Giá trị
21
Số nguyên có dấu
Giá trị
Giá trị thập Biểu diễn bù
phân 2
0 0000 0000
Ví dụ +1 0000 0001
Dùng 8 bít biểu diễn số +2 0000 0010
….
Khoảng giá trị +126 0111 1110
7 = [-128,127] +127 0111 1111
-128 1000 0000
Đặc điểm: -127 1000 0001
•Trong dãy trên có 1 số 0 …
-2 1111 1110
•Không biểu diễn được giá trị 128
-1 1111 1111
22
Số nguyên có dấu
Bù 2
•VD: Tìm giá trị của các số nguyên có dấu biểu diễn bởi mã bù 8 bit sau:
•
•
•Ta có:
• A= 25+24+23+22+20
A= 32+16+8+4+1
A=61
• B= -27+(25+21+20)
B= -128+ (32+2+1)
B= -128+35
B= - 93
23
Số bù 2
Mở rộng bit
Mở rộng bit: số n bit lưu trữ với kích thước m bit ( m> n)
Số không dấu: Quy tắc - thêm các bit 0 vào bên trái
Số có dấu: Quy tắc - thêm các bit dấu vào bên trái
•Số dương: thêm số 0 vào bên trái
• (8 bit)
• (16 bit)
•Số âm: thêm số 1 vào bên trái
• (8 bit)
• (16 bit)
24
Số bù 2
Mở rộng bit
Với số A > 0: dễ thấy quy tắc đúng
Với A < 0
•Số n bit A= an-1 an-2 ... a1 a0
•Tìm biểu diễn m bit
Số bù 9 & bù 10
26
ĐẠI HỌC BÁCH KHOA HÀ NỘI
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
Chương 3
3.1. Biểu diễn số nguyên (Integer Representation)
3.2. Các phép tính với số nguyên (Integer Arithmetic)
3.3. Biểu diễn số dấu phẩy động (Floating-Point Representation)
3.4. Các phép tính dấu phẩy động (Floating-Point Arithmetic)
27
Phép đảo dấu
28
Phép đảo dấu
Bù hai số dương
Bù hai số âm
Kiểm tra:
•số A dạng bù 2:
•lật bit:
•cộng 1: được số B:
•có thể kiểm tra A = B ~ A+B=0:
31
Phép đảo dấu - bù 2
32
Phép cộng hai số nguyên
Thực hiện phép cộng như với các số nguyên không dấu
Cộng hai số nguyên có dấu n-bit, Không quan tâm tới bit nhớ Cout
•Hai số trái dấu: Kết quả luôn đúng
•Hai số cùng dấu:
• Kết quả đúng nếu cùng dấu với số hạng
• Kết quả sai nếu trái dấu với hai số hạng - là quy tắc nhận biết tràn số
•Có thể xảy ra bit nhớ vượt quá biên => bỏ qua bit nhớ
•Tràn số khi kết quả ngoài [-(2n-1),+(2n-1-1)]
33
Phép cộng hai số nguyên
Ví dụ:
57+34 = 91
Đúng/sai ?
209+73=282
Đúng/sai ?
34
Phép cộng hai số nguyên
Nếu thực hiện phép cộng như với các số nguyên không dấu ?
(a),(b),(c),(d): phép toán đúng
(e),(f): phép toán sai
35
Phép cộng hai số nguyên
36
Phép cộng hai số nguyên
Ví dụ cộng bị tràn
•75+82
•(-104)+(-43)
37
Phép trừ hai số nguyên
38
Phép cộng trừ - thể hiện hình học
39
Mạch cộng trừ
40
41
Phép nhân
Nhân số không dấu
B1/ Tính các tích riêng thành phần
B2/ Tính tổng các tích thành phần
Tích thành phần
•Bit = 0 => tích = 0
•Bit = 1 => tích = số bị nhân
Tổng các tích thành phần
•Dịch bit ~ nhân với lũy thừa 2i
Thừa số n-bit => tích không quá 2n-bit
42
Phép nhân
Nhân số không dấu
Thực hiện trên máy
•Cộng ngay các tích thành phần
•Bit hiện tại của Số nhân
bit 1: cần cộng và dịch
bit 0: chỉ cần dịch
44
Phép nhân
Nhân số có dấu bù 2
Phép cộng số bù 2:
•Coi là 2 số không dấu và cộng số không dấu
•Không áp dụng được cho phép nhân, vd:
46
Phép nhân
Nhân số có dấu bù 2
Sử dụng giải thuật nhân không dấu
Sử dụng giải thuật Booth
47
Phép nhân
Nhân số bù 2: Sử dụng giải thuật nhân không dấu
Bước 1: Chuyển hai thừa số thành số dương tương ứng
Bước 2: Nhân hai số dương bằng giải thuật nhân hai số không
dâu
Bước 3: Hiệu chỉnh dấu của tích
•Nếu hai thừa cùng dấu => Giữ nguyên kết quả bước 2
•Nếu hai thừa số trái dấu => Đảo dấu (Lấy bù 2)
48
Phép nhân
Nhân số có dấu bù 2: sử dụng nhân không dấu
0011
Ví dụ 0101
00000011 1011 x1 x20
0000000- 1011 x0 x21
000011-- 1011 x1 x22
00000--- 1011 x0 x23
00001111 = 1510
49
Phép nhân
Nhân số bù 2: Giải thuật Booth
•Số bị nhân => thanh ghi M
•Số nhân => thanh ghi Q
•thêm thanh ghi Q-1 - bit thấp lưu lịch sử Q0
•Mỗi nhịp xử lý 1 bit, xét 2 bit Q0Q-1
• giống nhau (1-1;0-0):
• dịch phải nhưng bảo toàn bit dấu An-1 của A -
gọi là arithmetic shift right <A Q Q-1 >
• khác nhau (1-0;0-1):
• cộng hoặc trừ số bị nhân M với A
• thực hiện arithmetic shift right <A Q Q-1 >
50
Phép nhân
Nhân số bù 2: Giải thuật Booth
•VD: (7 x 3) 0111 x 0011
51
Phép nhân
Nhân số bù 2 Giải thuật Booth
•Các trường hợp >0, <0 Q0 Q -1
52
Phép nhân
Nhân số bù 2 Giải thuật Booth
•Tình huống số nhân > 0:
để ý
53
Phép chia
Chia 2 số không dấu
•10010011 : 1011
•Các bit số bị chia duyệt từ trái sang
•Còn nhỏ hơn số chia =>
• bit 0 đưa vào thương
• ghép vào số dư riêng phần
•Đến khi lớn hơn số chia =>
• bit 1 đưa vào thương
• số dư riêng phần -= số chia
•Lặp lại
54
Phép chia
Chia 2 số không dấu
•Ban đầu
• Thanh ghi A = 0
• Thanh ghi M = số chia
• Thanh ghi Q = số bị chia
•Kết quả
• Thương => thanh ghi Q
• Phần dư => thanh ghi A
•giả định số chia < số bị chia
55
Phép chia
Chia 2 số không dấu
VD: 7:3 = 2 dư 1
56
Phép chia
Chia 2 số có dấu
Bước 1: Chuyển số bị chia và số chia thành số dương tương
ứng
Bước 2: Sử dụng giải thuật chia không dấu để chia hai số
dương ta được thương và số dư đều dương
Bước 3: Hiệu chỉnh dấu của kết quả theo bảng sau
57
ĐẠI HỌC BÁCH KHOA HÀ NỘI
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
Chương 3
3.1. Biểu diễn số nguyên (Integer Representation)
3.2. Các phép tính với số nguyên (Integer Arithmetic)
3.3. Biểu diễn số dấu phẩy động (Floating-Point Representation)
3.4. Các phép tính dấu phẩy động (Floating-Point Arithmetic)
58
Số dấu phẩy động
Vấn đề
•Biểu diễn số: số rất lớn, hoặc số có phần thập phân rất nhỏ
•Sai số tính toán
59
Số dấu phẩy động
: Phần dấu
M: Định trị (Mantissa)
R: Cơ số (Radix)
E: Phần mũ (Exponent)
60
Số dấu phẩy động
63
Số dấu phẩy động
Dạng 32 bit IEE754-2008
S: bit dấu
•S=0 => Số dương
•S=1 => Số âm
phần mũ: được biểu diễn là số dịch (bias) 127
•nếu số mũ thực tế là E: phần mũ e=E+127 => giá trị mũ E = e127
phần định trị: chỉ phần lẻ của phần định trị M
•M=1.m
64
Số dấu phẩy động
Dạng 32 bit IEE754-2008
Dải giá trị dạng 32 bit
65
Số dấu phẩy động
Dạng 32 bit IEE754-2008
Ví dụ
Xác định số thực (cơ số 10) của
•X=1100 0001 0101 0110 0000 0000 0000 0000
66
Số dấu phẩy động
Dạng 32 bit IEE754-2008
Ví dụ
Biễu diễn 32 bit fp cho số thực X=27.75
•Chuyển sang nhị phân
phần nguyên: 27=11011 ; phần lẻ: .75 = .11
=> X= 11011.11
chuẩn hóa: X= 11011.11 = 1.101111 x 24
•bit dấu s=1
•mũ: E=4 => e=131 = 100000112
•định trị m = 101111
67
Số dấu phẩy động
Các qui ước đặc biệt
Mật độ số
68
Số dấu phẩy động
Dạng 64 bit
S là bit dấu: 1 bit
e (11 bit) được biểu diễn là số dịch 1023 của phần mũ
•e=E+1023-> Phẫn mũ E=e-1023
m (52 bit) là phần lẻ của phần định trị M
•M=1.m
•
Giải biểu diễn:
-(2-2-52)x2+1024 đến -2-1023; 2-1023 đến (2-2-52)x2+1023
69
Số dấu phẩy động
Dạng 128 bit
S là bit dấu: 1 bit
e (15 bit) được biểu diễn là số dịch 16383 của phần mũ
•e=E+16383-> Phẫn mũ E=e-16383
m (112 bit) là phẩn lẻ của phần định trị M
•M=1.m
•
Giải biểu diễn:
-(2-2-112)x2+16384 đến -2-163833; 2-16383 đến (2-2-112)x2+16384
70
ĐẠI HỌC BÁCH KHOA HÀ NỘI
HANOI UNIVERSITY OF SCIENCE AND TECHNOLOGY
Chương 3
3.1. Biểu diễn số nguyên (Integer Representation)
3.2. Các phép tính với số nguyên (Integer Arithmetic)
3.3. Biểu diễn số dấu phẩy động (Floating-Point Representation)
3.4. Các phép tính dấu phẩy động (Floating-Point Arithmetic)
71
Thực hiện các phép toán dấu phẩy động
giả sử mũ exponent:
72
Thực hiện các phép toán dấu phẩy động
giả sử mũ exponent:
73
Tình huống tràn số
Kiểm tra xem một trong các số hạng có bằng 0 hay không
Qui đồng mũ, bằng cách hiệu chỉnh phần định trị
75
Phép cộng/ trừ dấu phẩy động
• Kiểm tra xem một trong các số hạng có bằng 0 hay không
• Qui đồng mũ, bằng cách hiệu chỉnh phần định trị
• Cộng/trừ phần định trị
• Chuẩn hóa kết quả (Hiệu chỉnh phần định trị và mũ)
76
Phép nhân
số dấu phẩy động
•Cộng mũ
• cộng mũ
• hiệu chỉnh bias
• kiểm tra tràn
•Nhân định trị
•Chuẩn hóa, làm tròn
77
Phép chia
số dấu phẩy động
•Kiểm tra 0
• số chia
• số bị chia
•Trừ số mũ
• kiểm tra tràn
•Chia phần định trị
•Chuẩn hóa và làm tròn
×
78
Bit dự phòng - Guard bits
Khi biến đổi về cùng mũ => định trị dịch phải => mất 1 số bit
giá trị => giảm độ chính xác
Có thể dùng bit dự phòng
79