T Tin Hc
Trang 73 Ch biên Võ Thanh Ân
CHƯƠNG 6: MCH LÀM TOÁN
9 S
9 PHÉP TOÁN VI S BÙ 1
9 PHÉP TOÁN VI S BÙ 2
9 PHÉP TOÁN VI S BÙ 2 K C BIT DU
9 MCH CNG
Bán phn
Toàn phn
Cng nhiu bit
9 MCH TR
Bán phn
Toàn phn
Cng tr trong mt mch
9 MCH NHÂN
9 MCH CHIA
I. S
Cho s dương N, n bit, các s bù ca N được định nghĩa như sau:
S bù 2: (N)2 = 2n – N.
S bù 1: (N)1 = (N)2 – 1 = 2n – N –1.
Ví d 1: Ta cho N = 1010.
S bù 2 ca N là (N)2 = 10000 – 1010 = 0110.
Và s bù 1 ca N là (N)1 = 0110 – 1 = 0101.
Ví d 2: Ta cho N = 1100 1010 1100.
S bù 2 ca N là (N)2 = 0011 0101 0100.
Và s bù 1 ca N là (N)1 = 0011 0101 0011.
Nhn xét:
- Để có s bù 2 ca mt s, bt đầu t bit LSB (bit tn cùng bên phi), đi
ngược v bên trái, các s s gi nguyên cho đến lúc gp bit 1 đầu tiên, sau
đó đảo tt c các bit còn li.
- Để có s bù 1 ta đảo tt c các bit ca s đó.
T nhn xét trên, ta có th to mch vi s bù 1 và bù 2 (hình dưới).
Hình: Mch to s bù 1 và bù 2 (3 bit).
Khi C = 1, mch to ngã ra là s nh phân bù 1 (ca s ngã vào).
Khi C = 0, mch to ngã ra là s nh phân bù 2 (ca s ngã vào).
Ta xét biu thc ngã ra theo các ngã vào như sau:
)(
)(
2133
122
11
bbCbB
bCbB
CbB
++=
+=
=
Khi C = 1, các ngã ra ca cng OR luôn bng 1, các cng EX-OR luôn có 1 ngã
vào bng 1 nên ngã ra là đảo ca ngã vào còn li.
C
b1
b2
b3
B1
B2
B3
Giáo trình K Thut S
Ch biên Võ Thanh Ân Trang 74
3
32133
2
2122
1
11
1)1(
1)1(
1
bbbbbB
bbbbB
bbB
==++=
==+=
==
Khi C = 0.
B1 = b1 0 = b1
B2 = b2 (0 + b1) = b2 b1
B3 = b3 (0 + b1+ b2) = b2 (b1 + b2)
Vy tt c các bít sau bit đầu tiên bng 1 (tính t bít trng s nh nht - LSB)
đều b đảo trng thái. Đây chính là s bù 2 ca b.
Chúng ta có th thiết kế mch to s bù 2 bng cách dùng FF RS. Mch này
dùng thun tin khi cn thc hin bài toán cng và tr nhiu bit ni tiếp.
Hình: Mch to s bù 2 dùng FF RS.
Bt đầu, Preset mch để ngã ra Q = 1, các cng G2 m, G3 đóng cho s B đi qua
mà không b đảo cho đến khi có bit 1 đầu tiên đến, cng G1 m cho xung đồng h đi
qua, FF RS được Reset Q = 0 và Q =1, G3 m, G2 đóng, s B đi qua cng G2 và b
đảo. ngã ra được s bù 2 ca B.
II. CÁC PHÉP TOÁN NH PHÂN TRÊN S BÙ 1
1. Trường hp N1<N2
Cho s 2 s dương N1 và N2 có n bit (nếu s bit khác nhau ta phi thêm 0 vào,
mà không làm thay đổi giá tr, để c hai có cùng s bit).
Ta tính:
N1 – N2 = N1 – N2 + 2n – 1 – 2n + 1
= N1 + (2n – N2 – 1) – 2n + 1
= N1 + (N2)1 – 2n + 1
= – {2n – [N1 + (N2)1] – 1}
= – [N1 + (N2)1]1
Vy N1 – N2được bng cách cng s bù 1 ca N2 vào N1 ri ly bù 1 ca tng
và thêm du tr. Như vy, ta có th thc hin phép tr ch cn dùng phép cng và phép
đảo.
Ví d: Tính 1001 – 11010 dùng s bù 1.
Ta có: N1 = 01001 (thêm vào s 0 để có 5 bit như N2).
N
2 = 11010 (N2)1 = 00101
N
1 – N2 = – [N1 + (N2)1]1 = –(01001 + 00101) = – (01110)1 = –(10001)
Trong h thp phân đây là bài toán: 910 – 2610 = –1710.
Để thy du tr được nhn ra như thếo, ta viết li phép toán.
S P
r
Q
CK
R Cl Q
0
1
G1
G2
G3
B
C
K
(B)2
T Tin Hc
Trang 75 Ch biên Võ Thanh Ân
+N1 01001
N2 00101
S tràn 0 01110
Không có s tràn là du hiu ca s âm, ta phi ly bù 1 và thêm du tr để đọc
kết qu cui cùng: –(01110)1 = – 10001.
2. Trường hp N1 N2
Kết qu N1 – N2 là s 0 hoc s dương, phép tính được thc hin theo qui tc
sau: Cng N1 vi (N2)1 ri cng thêm 1 mà không quan tâm đến s nh.
Ví d 1: Tính 110101 – 100110.
N1 = 110101 và (N2)1 = 011001.
+N1 110101
(N2)1011001
1 001110
+ 1
S tràn1001111
B qua s nh cui cùng ta được kết qu N1 – N2 =001111.
Trong h thp phân đây là bài toán: 5310 – 3810 = 1510.
Trong phép tính trên có s tràn chng t kết qu là s dương. S 1 cng thêm vào
xem như ly t s nh đem qua.
Ví d 2: Tính 10110 – 10110.
N1 = 10110 và (N2)1 = 01001.
+N1 10110
(N2)101001
11111
+ 1
S tràn100000
Trong phép cng đầu tiên, không có s tràn, kết qu xem như s âm ca s bù và
khi cng thêm 1 thì xut hin s tràn mà ta đã b qua. Vy N1 – N2 = 00000.
III. CÁC PHÉP TOÁN NH PHÂN TRÊN S BÙ 2
1. Trường hp N1<N2
Các toán dùng s bù 1 bt tin vì ta phi cng 1 vào, để tránh vic này, ta dùng
phép toán dùng s bù 2.
Tương t, cho 2 s nh phân dương N1 và 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
Vy N1 – N2được bng cách cng s bù 2 ca N2 vào N1 ri ly bù 2 ca tng
và thêm du tr. Như vy, ta đã chuyn phép tính tr thành phép tính cng.
Ví d: Tính 1001 – 11010 dùng s bù 2.
N1 = 01001 và (N2)2 = 00110.
Giáo trình K Thut S
Ch biên Võ Thanh Ân Trang 76
Vy N1 – N2 = – [N1 + (N2)2]2 = –[01001+00110]2 = –(01111)2 = – (10001).
Tương t như trên, để thy tr được nhn ra như thế nào, ta viết li phép toán.
+N1 01001
(N2)200110
S tràn001111
Không có s tràn là du hiu ca s âm. Ta phi ly bù 2 và thêm du tr để
kết qu cui cùng.
2. Trường hp N1 N2
Kết qu N1 – N2 là s 0 hoc s dương, phép tính được thc hin theo qui tc
sau: Cng N1 vi (N2)2 mà không quan tâm đến s nh v trí 2n.
Ví d 1: Tính 110101 – 100110.
N1 = 110101 và (N2)2 = 011010.
+N1 110101
(N2)2011010
S tràn1001111
Có s tràn, đây là kết qu s dương. B qua s nh cui cùng, không cn biến
đổi ta được kết qu N1 – N2 =001111.
Trong h thp phân đây là bài toán: 5310 – 3810 = 1510.
Ví d 2: Tính 10110 – 10110.
N1 = 10110 và (N2)1 = 01010.
+N1 10110
(N2)201010
S tràn100000
B qua s tràn, ta được N1 – N2 = 00000.
IV. CÁC PHÉP TOÁN DÙNG S BÙ 2 K C BIT DU
Cho ti gi, chúng ta thc hin các phép toán vi s không du và đôi khi xut
hin du tr trong kết qu. Trong máy tính, đều này có th khc phc được bng cách
dùng s có du.
Vi qui ước chung là: S dương bit du là 0, s âm bit du là 1.
Ví d 1: Ta ly mt s s âm và dương đối nhau như dưới đây (lưu ý là hai s đối
nhau cng li phi bng 0).
+10 = 01010 +15 = 01111 +23 = 010111
–10 = 10110 –15 = 10001 –23 = 101001
Có th thy rng, s âm ca mt s là bù 2 ca nó k c bit du.
Vi cách biu din s có du, phép toán tr tr thành phép toán cng.
N1 – N2 = N1 + (–N2)
Ví d 2: Tính N1 – N2 = 01110 – 01001.
N2 = 01001 = +910 Î –910 = 10111.
T Tin Hc
Trang 77 Ch biên Võ Thanh Ân
C2C1
1111
S nh
+01110
10111
1 0 0101
C’2 Du
Bit du bng 0 ch kết qu là s dương, b s tràn C’2. Vy N1 – N2 = 00101.
Trong thp phân đây là bài toán [14 + (–9)] = 5.
Nếu N1, N2 đều dương hoc âm, kết qu có th cn thêm 1 bit do tràn s. Trong
trường hp này bit tràn đầu tiên thuc kết qu C’2 là bit du.
Ví d 3: Tính N1 + N2 = 01110 + 01001 (Bài toán: 1410 + 910).
Kết qu là: 010111 (2310). Vi C’2 = 0 là bit du.
C2C1
01 S nh
+01110
01001
010111
Du = C’2
Ví d 4: Tính N1 – N2 = 10010 – 01001 (Bài toán: –1410 – 910).
Tương t như trên: (N2)2 = 10111.
C2C1
1011
S nh
+10010
10111
101001
Du = C’2
Mt ln na C’2 ch bit du. Kết qu là: 101001 Ù–2310 (010111 Ù+2310).
T các kết qu trên, ta rut ra qui tc sau:
Nếu C1 = C2 thì C’2 là bit tràn b đi. Nếu C1 C2 thì C’2 là bit du.
Ví d 5: Tính N1 – N2 = 011101 – 0110 (Bài toán: 2910 – 610).
Tương t như trên, N2 phi có s bit bng N1: N2 = 000110 Î (N2)2 = 111010.
C2 C
1
1 1 1 S nh
+ 0 11101
1 11010
1 0 10111
C’2 Du
Trường hp này C1 = C2 nên C’2 là bit tràn, ta b đi.