Thut ton nhn chia Thut ton Boot 5242021
Thuật toán nhân chia & Thuật toán Boot 5/24/2021 Kiến Trúc Máy Tính 1
22/04/13 Kiến Trúc Máy Tính 2
22/04/13 Kiến Trúc Máy Tính 3
Bộ nhân số nguyên không dấu 5/24/2021 Kiến Trúc Máy Tính 4
Lưu đồ thuật toán phép nhân không dấu 5/24/2021 Kiến Trúc Máy Tính 5
Ví dụ nhân nhị phân không dấu theo lưu đồ thuật toán nêu trên Ví dụ 1: Số bị nhân : 1210= 11002 Số nhân : 810 = 10002 Tích số : 9610= 11000002 Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =0000, Count=4, M=1100, Q=1000 5/24/2021 Kiến Trúc Máy Tính 6
C A 0 0000 0 0000 0 1100 0 0110 Kết quả : chứa trong A & Q Q Thực hiện Count=4 1000 0100 0010 0001 0000 Q 1= 0 Dời bít sang phải Count=3 Q 1= 0 Dời bít sang phải Count=2 Q 1 = 0 Dời bít sang phải Count=1 Q 1 = 1 A=A+M Dời bít sang phải Count=0 0110 0000 A 5/24/2021 Q Kiến Trúc Máy Tính 7
Ví dụ nhân nhị phân không dấu theo lưu đồ thuật toán nêu trên Ví dụ 2: Số bị nhân : 1310= 11012 Số nhân : 710 = 1112 Tích số : 9110= 10110112 Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =0000, Count=3, M=1101, Q=111 5/24/2021 Kiến Trúc Máy Tính 8
C A Q 0 0 1 0 0000 1101 0110 0011 1001 0110 1011 111 111 011 Thực hiện Count=3 Q 1= 1 A=A+M Dời bít sang phải Count=2 Q 1 = 1 A=A+M Dời bít sang phải Count=1 Q 1 = 1 A=A+M Dời bít sang phải Count=0 Kết quả : chứa trong A & Q 1011 A 5/24/2021 Q Kiến Trúc Máy Tính 9
Ví dụ nhân nhị phân không dấu theo lưu đồ thuật toán nêu trên Ví dụ 3: Số bị nhân : 1510= 11112 Số nhân : 2110 = 101012 Tích số : 31510= 1001110112 Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =0000, Count=5, M=1111, Q=10101 5/24/2021 Kiến Trúc Máy Tính 10
C 0 0 0 1 0 A 0000 1111 0111 0011 0010 1001 0100 0011 1001 Kết quả : chứa trong A & Q Q 10101 11010 11101 01110 10111 11011 Q 1= 1 A= A+M Dời bít sang phải Count=4 Q 1= 0 Dời bít sang phải Count=3 Q 1 = 1 A= A+M Dời bít sang phải Count=2 Q 1 = 0 Dời bít sang phải Count=1 Q 1 = 1 A= A+M Dời bít sang phải Count=0 1001 11011 A 5/24/2021 Thực hiện Count=5 Q Kiến Trúc Máy Tính 11
Nhân số nguyên có dấu 5/24/2021 Kiến Trúc Máy Tính 12
Thuật toán nhân có dấu Theo sơ đồ thuật toán nêu trên Ví dụ 4: Số bị nhân : -710= 10012 (bù 2) =1112 Số dương Số nhân : 1010 = 10102 Tích số : -7010= 1011 10102 (bù 2) Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =000, Count=4, M=111, Q=1010 5/24/2021 Kiến Trúc Máy Tính 13
C A 0 000 0 111 0 011 0 001 1 000 0 100 Kết quả : chứa trong A & Q Q 1010 0101 1010 1101 0110 Thực hiện Count=4 Q 1 = 0 Dời bít sang phải Count=3 Q 1 = 1 A= A+M Dời bít sang phải Count=2 Q 1 = 0 Dời bít sang phải Count=1 Q 1=1 A= A+M Dời bít sang phải Count=0 0100 0110 Chuyển bù 2 kết quả 1011 1010 A 5/24/2021 Q Kiến Trúc Máy Tính 14
Ví dụ 5: Số bị nhân : -910= 111101112 ( bù 2) =10012 Số dương Số nhân : -2110 =11101011 ( bù 2) = 101012 Số dương Tích số : 18910= 101111012 Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =0000, Count=5, M=1001, Q=10101 5/24/2021 Kiến Trúc Máy Tính 15
C A 0 0000 0 1001 0 0100 0 0010 0 1011 0 0101 Kết quả : chứa trong A & Q Q 10101 11010 01101 10110 11011 11101 0101 11101 là A 5/24/2021 Thực hiện Count=5 Q 1 = 1 A= A+M Dời bít sang phải Count=4 Q 1= 0 Dời bít sang phải Count=3 Q 1 = 1 A= A+M Dời bít sang phải Count=2 Q 1 = 0 Dời bít sang phải Count=1 Q 1 = 1 A= A+M Dời bít sang phải Count=0 kết quả cuối cùng vì 2 số cùng dấu Q Kiến Trúc Máy Tính 16
Mô Hình thuật toán nhân qua ví dụ Ví dụ 1: Số bị nhân : 1210= 11002 Số nhân : 810 = 10002 Tích số : 9610= 11000002 Theo sơ đồ thuật toán các giá trị ban đầu thuật toán lần lượt là : C=0, A =0000, Count=4, M=1100, Q=1000 5/24/2021 Kiến Trúc Máy Tính 17
Start C, A<=0, Count<=n, M<= Số bị nhân, Q<= Số nhân N Q 1=1 ? C, A<=A+M Shift Right C, A, Q Count =Count -1 N Count=0 ? Y Y The End 5/24/2021 Kiến Trúc Máy Tính 18
0 5/24/2021 Kiến Trúc Máy Tính 19
C=0, A=0000, Count=3, M= 1100, Q= 0100 Q 1=0 ? Shift Right C, A, Q C=0, A=0000, Q=0100 Count =Count -1 Count=3 ? 5/24/2021 Kiến Trúc Máy Tính 20
C=0, A=0000, Count=2, M= 1100, Q= 0010 Q 1=0 ? Shift Right C, A, Q C=0, A=0000, Q=0010 Count =Count -1 Count=2 ? 5/24/2021 Kiến Trúc Máy Tính 21
C=0, A=0000, Count=1, M= 1100, Q= 00011 Q 1=0 ? Shift Right C, A, Q C=0, A=0000, Q=0001 Count =Count -1 Count=1 ? 5/24/2021 Kiến Trúc Máy Tính 22
C=0, A=0000, Count=1, M= 1100, Q= 0001 Q 1=1 ? A=A+M 0000+1100 =1100 Shift Right C, A, Q C=0, A=0110, Q=0000 Count =Count -1 The End Count=0 ? Kết quả: A&Q =0110 0000 5/24/2021 Kiến Trúc Máy Tính 23
Thuật toán Booth 5/24/2021 Kiến Trúc Máy Tính 24
Thuật toán Booth Thực hiện phép toán nhân lưu đồ theo thuật toán Booth. • Các số hạng trong phép nhân phải có dấu. Vậy nếu là Số dương bit lớn nhất = 0; Số âm bit lớn nhất = 1 • Các số hạng có độ dài bit giống nhau. • Khởi tạo Q-1 =0 • Khi Q 0 Q-1 = 00 hay 11 dời bit sang phải giảm số hạng nhân là 1 5/24/2021 Kiến Trúc Máy Tính 25
• Khi Q 0 Q-1 = 01 thì A = A+M dời bit sang phải giảm số hạng nhân là 1 • Khi Q 0 Q-1 = 10 thì A = A-M dời bit sang phải giảm số hạng nhân là 1 • Khi dời bit giữ dấu của A • Khi nhân hết số hạng kết quả là giá trị được nối giữa hai giá trị A & Q 5/24/2021 Kiến Trúc Máy Tính 26
Ví dụ : 12 x -5 Chuyển số thập phân sang nhị phân có dấu: dấu M = 12 M = 011002 ; -M = 101002 Q = -5 Q = 110112 A = 00000 , Count = 5 Thông thường trong máy tính các số hạng có dạng 4, 8, 16, 32, 64 bits nhưng để đơn giản và không ảnh hưởng thuật toán ta có thể chuyển sang số nhị phân có số bit 2 số hạng bằng nhau và có dấu 5/24/2021 Kiến Trúc Máy Tính 27
A 00000 10100 11010 11101 1 01001 00100 11000 11110 Kết quả : 5/24/2021 Q 0 11011 01101 00110 10011 01001 00100 Q-1 Thực hiện 0 Q Q =10, Count = 5 0 A= A-M 1 Shift R, Count = 4, Q Q =11 1 Shift R, Count = 3, Q Q =01 1 A= A+M 0 Shift R, Count = 2, Q Q =10 0 A= A-M 1 Shift R, Count = 1, Q Q =11 0 -1 0 0 1111000100 1 Kiến Trúc Máy Tính 0 -1 -1 -1 Shift R, Count = 0 Kết thúc 28
Ví dụ : -5 x 12 Chuyển số thập phân sang nhị phân có dấu: dấu M = -5 M = 110112 - M = 00101 Q = 12 M = 011002 A = 00000 , Count = 5 Thông thường trong máy tính các số hạng có dạng 4, 8, 16, 32, 64 bits nhưng để đơn giản và không ảnh hưởng thuật toán ta có thể chuyển sang số nhị phân có số bit 2 số hạng bằng nhau và có dấu 5/24/2021 Kiến Trúc Máy Tính 29
A 00000 00101 00010 00001 11100 11110 Kết quả : 5/24/2021 Q 0 01100 00110 00011 10001 01000 00100 Q-1 Thực hiện 0 Q Q =00, Count = 5 0 Shift R, Q Q = 00, Count = 4 0 Shift R, Count = 3, Q Q =10 0 A= A-M 1 Shift R, Count = 2, Q Q =11 1 Shift R, Count = 1, Q Q =01 1 A= A+M 1 Shift R, Count = 0, Q Q =11, Kết thúc 0 -1 0 -1 1111000100 Kiến Trúc Máy Tính 30
Ví dụ 1: Số bị nhân: 0111 (7) Số nhân : 0110 (6) Tích : 00101010 (42) Thực hiện theo sơ đồ thuật toán trên: A = 0000, Count = 4, M = 0111, -M=1001, Q = 0110 5/24/2021 Kiến Trúc Máy Tính 31
A 0000 1001 1100 1110 0101 0010 Kết quả 5/24/2021 Q 0 0110 0011 1001 0100 1010 Q-1 0 0 0 1 1 1 0 0010 1010 A Q 0 Thực hiện Khởi tạo Q-1=0 Count =4 Q 0 Q-1 = 00 Shift R Count =3 Q 0 Q-1 = 10 A=A-M Shift R count =2 Q 0 Q-1 = 11 Shift R count =1 Q 0 Q-1 = 01 A=A+M Shift R count =0 Kiến Trúc Máy Tính 32
Ví dụ 2: Số bị nhân: 1001 (-7) Số nhân : 0110 (6) Tích : 11010110 (-42) Thực hiện theo sơ đồ thuật toán trên: A = 0000, Count = 4, M = 1001, -M= 0111, Q = 0110 5/24/2021 Kiến Trúc Máy Tính 33
A 0000 0111 0011 0001 1010 1101 Kết quả 5/24/2021 Q 0 0110 0011 1001 1100 0110 Q-1 Thực hiện 0 Khởi tạo Q-1=0 Count =4 0 Q-1 = 00 0 Shift R Count =3 0 Q-1 = 10 0 A=A-M 1 Shift R count =2 1 Q 0 Q-1 = 11 1 Shift R count =1 1 Q 0 Q-1 = 01 1 A=A+M 0 Shift R count =0 1101 0110 A Q 0 Kiến Trúc Máy Tính 34
Ví dụ 3: Số bị nhân: 1001 (-7) Số nhân : 1010 (-6) Tích : 00101010 (-42) Thực hiện theo sơ đồ thuật toán trên: A = 0000, Count = 4, M = 1001, -M= 0111, Q = 1010 5/24/2021 Kiến Trúc Máy Tính 35
A 0000 0111 0011 1100 1110 0101 0010 Kết quả 5/24/2021 Q 0 1010 0101 0101 1010 Q-1 0 0 0 1 1 1 0 0 0 1 0010 1010 A Q 0 Thực hiện Khởi tạo Q-1=0 Count =4 Q 0 Q-1 = 00 Shift R Count =3 Q 0 Q-1 = 10 A=A-M Shift R count =2 Q 0 Q-1 = 01 A=A+M Shift R count =1 Q 0 Q-1 = 10 A=A-M Shift R count =0 Kiến Trúc Máy Tính 36
Lưu đồ chia nhị phân không dấu 22/04/13 Kiến Trúc Máy Tính 37
Chia số nguyên có dấu v Chuyển đổi số bị chia và số chia về dạng số dương v Sử dụng thuật giải chia số nguyên không dấu. Kết quả thương trong Q và phần dư trong A v Hiệu chỉnh dấu kết quả: 22/04/13 Số bị chia Số thương + + - + + Giữ nguyên KQ Đảo dấu KQ - - Giữ nguyên KQ Đảo dấu KQ Kiến Trúc Máy Tính Số dư 38
Ví dụ : Số bị chia Q : 1111 (15) Số chia M : 0101 (5) A=0000, Count = 4, Q=1111, M=0101, -M = 1011 22/04/13 Kiến Trúc Máy Tính 39
Thực hiện Khởi tạo count=4 Shift Left A, Q A=A-M A=A+M Shift L: A, Q count=3 A=A-M A=A+M Shift L: A, Q count=2 A=A-M Shift L: A, Q count=1 A=A-M Q 0 0 0 01 01 011 A 0000 0001 1100 0001 0011 1110 0011 0111 0010 0101 0000 Shift L: A, Q count=0 Rút từ kết quả Số bị chia : 1111, Số thương: 011, Dư số : 0000 22/04/13 Kiến Trúc Máy Tính Q 1111 1110 1100 1000 0000 40
- Slides: 40