Tuy nhiên, trên phép toán ta thấy phép cộng với phép chia cuối cùng cho kết quả âm (1100), để điều chỉnh ta phải cộng vào số chia và bỏ qua số tràn.. Số nhớ của bài toán cuối cùng (bước[r]
(1)CHƯƠNG 6: MẠCH LÀM TOÁN
9 SỐ BÙ
9 PHÉP TOÁN VỚI SỐ BÙ PHÉP TOÁN VỚI SỐ BÙ
9 PHÉP TOÁN VỚI SỐ BÙ KỂ CẢ BIT DẤU MẠCH CỘNG
• Bán phần
• Tồn phần
• Cộng nhiều bit MẠCH TRỪ
• Bán phần
• Tồn phần
• Cộng trừ mạch MẠCH NHÂN
9 MẠCH CHIA I SỐ BÙ
Cho số dương N, n bit, số bù N định nghĩa sau: Số bù 2: (N)2 = 2n – N
Số bù 1: (N)1 = (N)2 – = 2n – N –1 Ví dụ 1: Ta cho N = 1010
Số bù N (N)2 = 10000 – 1010 = 0110 Và số bù N (N)1 = 0110 – = 0101 Ví dụ 2: Ta cho N = 1100 1010 1100
Số bù N (N)2 = 0011 0101 0100 Và số bù N (N)1 = 0011 0101 0011 Nhận xét:
- Để có số bù số, bit LSB (bit tận bên phải), ngược bên trái, số giữ nguyên lúc gặp bit đầu tiên, sau đảo tất bit cịn lại
- Để có số bù ta đảo tất bit số
Từ nhận xét trên, ta tạo mạch với số bù bù (hình dưới)
Hình: Mạch tạo số bù bù (3 bit) Khi C = 1, mạch tạo ngã số nhị phân bù (của số ngã vào) Khi C = 0, mạch tạo ngã số nhị phân bù (của số ngã vào) Ta xét biểu thức ngã theo ngã vào sau:
) ( ) ( 3 2 1 b b C b B b C b B C b B + + ⊕ = + ⊕ = ⊕ =
Khi C = 1, ngã cổng OR ln 1, cổng EX-OR ln có ngã vào nên ngã đảo ngã vào lại
(2)3 3 2 2 1 1 ) ( ) ( b b b b b B b b b b B b b B = ⊕ = + + ⊕ = = ⊕ = + ⊕ = = ⊕ =
Khi C =
B1 = b1 ⊕ = b1
B2 = b2 ⊕ (0 + b1) = b2 ⊕ b1
B3 = b3 ⊕ (0 + b1+ b2) = b2 ⊕ (b1 + b2)
Vậy tất bít sau bit (tính từ bít trọng số nhỏ - LSB) bị đảo trạng thái Đây số bù b
Chúng ta thiết kế mạch tạo số bù cách dùng FF RS Mạch dùng thuận tiện cần thực toán cộng trừ nhiều bit nối tiếp
Hình: Mạch tạo số bù dùng FF RS
Bắt đầu, Preset mạch để ngã Q = 1, cổng G2 mở, G3 đóng cho số B qua mà không bị đảo có bit đến, cổng G1 mở cho xung đồng hồ qua, FF RS Reset Q = Q =1, G3 mở, G2 đóng, số B qua cổng G2 bị đảo Ở ngã số bù B
II CÁC PHÉP TOÁN NHỊ PHÂN TRÊN SỐ BÙ
1 Trường hợp N1<N2
Cho số số dương N1 N2 có n bit (nếu số bit khác ta phải thêm vào, mà không làm thay đổi giá trị, để hai có số bit)
Ta tính:
N1 – N2 = N1 – N2 + 2n – – 2n + = N1 + (2n – N2 – 1) – 2n + = N1 + (N2)1 – 2n +
= – {2n – [N1 + (N2)1] – 1} = – [N1 + (N2)1]1
Vậy N1 – N2 có cách cộng số bù N2 vào N1 lấy bù tổng thêm dấu trừ Như vậy, ta thực phép trừ cần dùng phép cộng phép đảo
Ví dụ: Tính 1001 – 11010 dùng số bù
Ta có: N1 = 01001 (thêm vào số để có bit N2) N2 = 11010 → (N2)1 = 00101
N1 – N2 = – [N1 + (N2)1]1 = –(01001 + 00101) = – (01110)1 = –(10001) Trong hệ thập phân toán: 910 – 2610 = –1710
Để thấy dấu trừ nhận nào, ta viết lại phép toán
S Pr Q
CK
R Cl Q
(3)+ NN1 01001
2 00101
Số tràn→ 01110
Khơng có số tràn dấu hiệu số âm, ta phải lấy bù thêm dấu trừ để đọc kết cuối cùng: –(01110)1 = – 10001
2 Trường hợp N1≥ N2
Kết N1 – N2 số số dương, phép tính thực theo qui tắc sau: Cộng N1 với (N2)1 cộng thêm mà khơng quan tâm đến số nhớ
Ví dụ 1: Tính 110101 – 100110 N1 = 110101 (N2)1 = 011001
+ N1 110101
(N2)1 011001 001110
+
Số tràn→1 001111
Bỏ qua số nhớ cuối ta kết N1 – N2 =001111 Trong hệ thập phân toán: 5310 – 3810 = 1510
Trong phép tính có số tràn chứng tỏ kết số dương Số cộng thêm vào xem lấy từ số nhớ đem qua
Ví dụ 2: Tính 10110 – 10110 N1 = 10110 (N2)1 = 01001
+ N1 10110
(N2)1 01001
11111
+
Số tràn→1 00000
Trong phép cộng đầu tiên, khơng có số tràn, kết xem số âm số bù cộng thêm xuất số tràn mà ta bỏ qua Vậy N1 – N2 = 00000
III CÁC PHÉP TOÁN NHỊ PHÂN TRÊN SỐ BÙ
1 Trường hợp N1<N2
Các tốn dùng số bù bất tiện ta phải cộng vào, để tránh việc này, ta dùng phép toán dùng số bù
Tương tự, cho số nhị phân dương N1 N2 có n bit Ta tính:
N1 – N2 = N1 – N2 + 2n – 2n = N1 + (2n – N2) – 2n = N1 + (N2)2 – 2n
= – {2n – [N1 + (N2)2]} = – [N1 + (N2)2]2
Vậy N1 – N2 có cách cộng số bù N2 vào N1 lấy bù tổng thêm dấu trừ Như vậy, ta chuyển phép tính trừ thành phép tính cộng
(4)Vậy N1 – N2 = – [N1 + (N2)2]2 = –[01001+00110]2 = –(01111)2 = – (10001) Tương tự trên, để thấy trừ nhận nào, ta viết lại phép toán
+ N1 01001
(N2)2 00110 Số tràn→0 01111
Không có số tràn dấu hiệu số âm Ta phải lấy bù thêm dấu trừ để có kết cuối
2 Trường hợp N1≥ N2
Kết N1 – N2 số số dương, phép tính thực theo qui tắc sau: Cộng N1 với (N2)2 mà không quan tâm đến số nhớ vị trí 2n
Ví dụ 1: Tính 110101 – 100110 N1 = 110101 (N2)2 = 011010
+ N1 110101
(N2)2 011010 Số tràn→1 001111
Có số tràn, kết số dương Bỏ qua số nhớ cuối cùng, không cần biến đổi ta kết N1 – N2 =001111
Trong hệ thập phân toán: 5310 – 3810 = 1510 Ví dụ 2: Tính 10110 – 10110
N1 = 10110 (N2)1 = 01010
+ N1 10110
(N2)2 01010 Số tràn→1 00000
Bỏ qua số tràn, ta N1 – N2 = 00000
IV CÁC PHÉP TOÁN DÙNG SỐ BÙ KỂ CẢ BIT DẤU
Cho tới giờ, thực phép tốn với số khơng dấu xuất dấu trừ kết Trong máy tính, khắc phục cách dùng số có dấu
Với qui ước chung là: Số dương bit dấu 0, số âm bit dấu
Ví dụ 1: Ta lấy số số âm dương đối (lưu ý hai số đối cộng lại phải 0)
+10 = 01010 +15 = 01111 +23 = 010111 –10 = 10110 –15 = 10001 –23 = 101001 Có thể thấy rằng, số âm số bù kể bit dấu Với cách biểu diễn số có dấu, phép toán trừ trở thành phép toán cộng
(5)C2↓ C1↓
1 11 ← Số nhớ
+ 1110 1 0111 0101 C’2↑ Dấu↑
Bit dấu kết số dương, bỏ số tràn C’2 Vậy N1 – N2 = 00101 Trong thập phân toán [14 + (–9)] =
Nếu N1, N2 dương âm, kết cần thêm bit tràn số Trong trường hợp bit tràn thuộc kết C’2 bit dấu
Ví dụ 3: Tính N1 + N2 = 01110 + 01001 (Bài toán: 1410 + 910) Kết là: 010111 (2310) Với C’2 = bit dấu
C2↓ C1↓
0 ← Số nhớ
+ 1110 0 1001 0111 Dấu = C’2↑
Ví dụ 4: Tính N1 – N2 = 10010 – 01001 (Bài toán: –1410 – 910) Tương tự trên: (N2)2 = 10111
C2↓ C1↓
1 11 ← Số nhớ
+ 0010 1 0111 1001 Dấu = C’2↑
Một lần C’2 bit dấu Kết là: 101001 Ù–2310 (010111 Ù+2310) Từ kết trên, ta rut qui tắc sau:
Nếu C1 = C2 C’2 bit tràn bỏđi Nếu C1 ≠ C2 C’2 bit dấu Ví dụ 5: Tính N1 – N2 = 011101 – 0110 (Bài toán: 2910 – 610)
Tương tự trên, N2 phải có số bit N1: N2 = 000110 Ỵ (N2)2 = 111010 C2↓ C1↓
1 1 ← Số nhớ
+ 11101 1 11010 10111 C’2↑ Dấu↑
(6)0 0 1
1
0 1
↑ 1
1
↑ 1
1 0
↑ 1
1 1
↑ 1
1 0
↑ 1
0 1
Số dư
0 0 1
Thương số
Ví dụ 3: Thực toán 2110 = 0101012 chia 510 = 01102, kết dư Tuy nhiên, phép toán ta thấy phép cộng với phép chia cuối cho kết âm (1100), để điều chỉnh ta phải cộng vào số chia bỏ qua số tràn
Số bù 510 = 01012 (0111)2 = 1011
0 0 1
1
1 1
↑ 1
1 0
↑ 1
1 1
↑ 1
0 0
↑ 1
1 1
↑ 1
1 0 1
0 0 0 0
Thương số = Số dư =
Trong mạch chia hình đây, bước thực cổng EXOR cùng, có ngã vào điều khiển để thực toán trừ Sau bước thứ nhất, bit thứ tư mạch cộng (S4) định phép tốn sau cộng (S4=1) hay trừ (S4=0) số bị chia với số chia Số nhớ toán cuối (bước 6) bit LSB thương số Mạch cộng cuối thiết kế kết hợp cổng AND để xử lý kết số dư hai ví dụ Nếu kết tốn bước có S4=1 cổng AND mở để thực toán cộng với số chia để điều chỉnh số dư
(7)0
0 0 D6 D5 D4 D3 D2 D1 d1 d2 d3 d4
O6 O5 O4 O3 O2 O1 R4 R3 R2 R1 Th••ng s• S• d• C4
C4
C4
C4
C4