![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THbang.gif)
Cũng gồm 2 loại mạch trừ nửa hay chưa đủ : haft subtractor (HS) và trừ đủ hay còn gọi là trừ bán phần : full subtractor (FS) (khi này cần bit mượn Bi trước tham gia vào phép tính)
Phép trừ thực ra là phép cộng với số âm. Để có số âm của 1 số ta lấy bù 1 của số đó, còn khi thực hiện mạch thì đó là cổng đảo
Hình 2.3.15 là mạch trừ HS và bên cạnh là bảng trạng thái
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TNkhoii.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TNbang.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TNmach.gif)
Hình 2.3.15 Mạch trừ nửa, bảng trạng thái và mạch logic
Còn hình 2.3.17 là mạch trừ FS cùng bảng trạng thái hoạt động ở bên cạnh
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THkhoi.gif)
hình 2.3.17 Mạch trừ đủ
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THbang.gif)
Về cấu trúc mạch trừ cũng tương tự mạch cộng chỉ khác là số bị trừ B cần phải qua cổng đảo khi thực hiện AND với số trừ A để cho số mượn R.
Mạch trừ FS cũng gồm 2 mạch trừ HS và cổng OR ở ngõ ra cho số mượn B0
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/hinh2.3.18.gif)
Hình 2.3.18 Mạch trừ hết
3.2 Mạch trừ nhiều bit
Với mạch trừ nhị phân nhiều bit, cũng có thể thực hiện song song các mạch cộng FS từng bit nhưng các bit của số bị trừ cần được đảo, số nhớ của tầng cuối cần đem về bit nhớ ban đầu của tầng đầu.
Hình minh hoạ cho mạch trừ nhị phân 4 bit
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THss.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THnt.gif)
3.3 Mạch cộng trừ kết hợp
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CTbu1.gif)
Bây giờ nếu thêm vào một số cổng logic cần thiết ta đã có 1 mạch có thể cộng hay trừ tuỳ theo ngõ vào điều khiển CT
Khi CT = 0, các cổng EXOR có 1 ngõ ở thấp nên cho số B qua không bị đảo, tức là mạch thực hiện phép cộng
Khi CT = 1, các cổng EXOR có 1 ngõ ở cao nên hoạt động như 1 cổng NOT, số B bị đảo, khi này mạch thực hiện phép cộng A + (-
tức là phép trừ.
Co3 là bit LSB của tổng được vòng trở lại (qua cổng AND) về Ci0; sẽ cho phép cộng nhiều bit.
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CTbu2.gif)
Ngoài cách dùng bù 1, ta cũng có thể dùng bù 2 (lấy bù 1 rồi cộng thêm 1) để thực hiện phép toán trừ nhị phân kể cả số có dấu. Cách này được sử dụng phổ biến ở VXL và máy tính.
Hình 2.3.22 là mạch cộng trừ 2 số 4 bit dùng bù 2. Để ý là mạch khá giống như nó ở cách dùng bù 1 nhưng bit nhớ ra cuối cùng không cần đem về tầng đầu. Tổng hay hiệu ra ở dạng bù 2, muốn lấy đúng kết quả thì phải chuyển trở lại.
Khi đó mạch cộng trừ nhị phân 4 bit dùng bù 2 sẽ như sau :
CỘNG TRỪ BCD
4.1 Cộng 2 số BCD
Mạch trừ FS cũng gồm 2 mạch trừ HS và cổng OR ở ngõ ra cho số mượn B0
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/hinh2.3.18.gif)
Hình 2.3.18 Mạch trừ hết
3.2 Mạch trừ nhiều bit
Với mạch trừ nhị phân nhiều bit, cũng có thể thực hiện song song các mạch cộng FS từng bit nhưng các bit của số bị trừ cần được đảo, số nhớ của tầng cuối cần đem về bit nhớ ban đầu của tầng đầu.
Hình minh hoạ cho mạch trừ nhị phân 4 bit
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THss.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23THnt.gif)
3.3 Mạch cộng trừ kết hợp
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CTbu1.gif)
Bây giờ nếu thêm vào một số cổng logic cần thiết ta đã có 1 mạch có thể cộng hay trừ tuỳ theo ngõ vào điều khiển CT
Khi CT = 0, các cổng EXOR có 1 ngõ ở thấp nên cho số B qua không bị đảo, tức là mạch thực hiện phép cộng
Khi CT = 1, các cổng EXOR có 1 ngõ ở cao nên hoạt động như 1 cổng NOT, số B bị đảo, khi này mạch thực hiện phép cộng A + (-

Co3 là bit LSB của tổng được vòng trở lại (qua cổng AND) về Ci0; sẽ cho phép cộng nhiều bit.
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CTbu2.gif)
Ngoài cách dùng bù 1, ta cũng có thể dùng bù 2 (lấy bù 1 rồi cộng thêm 1) để thực hiện phép toán trừ nhị phân kể cả số có dấu. Cách này được sử dụng phổ biến ở VXL và máy tính.
Hình 2.3.22 là mạch cộng trừ 2 số 4 bit dùng bù 2. Để ý là mạch khá giống như nó ở cách dùng bù 1 nhưng bit nhớ ra cuối cùng không cần đem về tầng đầu. Tổng hay hiệu ra ở dạng bù 2, muốn lấy đúng kết quả thì phải chuyển trở lại.
Khi đó mạch cộng trừ nhị phân 4 bit dùng bù 2 sẽ như sau :
CỘNG TRỪ BCD
4.1 Cộng 2 số BCD
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CH_BCDvd.gif)
Số BCD thực ra cũng là số nhị phân n bit nhưng chỉ có 10 tổ hợp trạng thái từ 0000 đến 1001 (biểu thị số thập phân tương ứng là từ 0 đến 9) nên cách cộng cũng tương tự như cổng số nhị phân nhiều bit. Tuy nhiên khi tổng vượt quá 1001 thì tức là tổng đó không còn là số BCD nữa, do đó ta phải cộng tổng với 0110 (số 610) để cho tổng mới là số BCD đồng thời số nhớ chính là hàng cao hơn của tổng.
Ví dụ như cộng 2 số BCD sau:
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CH_BCDmach.gif)
Hình 2.3.23Mạch cộng 2 số BCD 1 bit
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TH_BCDvd.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TH_BCDmach.gif)
Hình 2.3.24 Mạch trừ 2 số BCD 1 bit
Ví dụ như cộng 2 số BCD sau:
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23CH_BCDmach.gif)
Hình 2.3.23Mạch cộng 2 số BCD 1 bit
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TH_BCDvd.gif)
![[IMG]](http://huongnghiepviet.com/codientu/ki_thuat_cdt/dien_tu/vi_mach_so/chuong_2/images_c2/h23TH_BCDmach.gif)
Hình 2.3.24 Mạch trừ 2 số BCD 1 bit