24/05/2018, 15:24

Phép trừ số nhị phân dùng số bù 1

Cho hai số dương A và B có n bit (nếu số bit khác nhau, ta thêm số 0 vào , mà không làm thay đổi trị, để cả hai có cùng số bit) a/ - A ≤ B Kết quả A-B là số 0 hoặc âm, phép tính được ...

Cho hai số dương A và B có n bit (nếu số bit khác nhau, ta thêm số 0 vào , mà không làm thay đổi trị, để cả hai có cùng số bit)

a/ - A B

Kết quả A-Blà số 0 hoặc âm, phép tính được thực hiện như sau:

Tính A - B:

A - B= A-B+2n-1-2n+1

= A+(2n -B-1 ) - 2n+1

= A+(B)1 - 2n+1

= - {2n - [A+(B)1] -1}

= - [A+(B)1]1

Vậy A-Bcó được bằng cách cộng số bù 1 của B vào A rồi lấy bù 1 của tổng và thêm dấu trừ . Như vậy để thực hiện phép tính trừ ta chỉ cần dùng phép cộng và phép đảo

Thí dụ 3 : Tính 1001 - 11010 dùng số bù 1

Ta có A = 01001 (thêm số 0 vào để có 5 bit như số B

B = 11010 ⇒ (B)1 = 00101

A-B= - [A+(B)1]1 = - (01001+00101) =- (01110)1

= - (10001)

Trong hệ thập phân, đây là bài toán 910 - 2610 = -1710

Để thấy dấu trừ được nhận ra như thế nào, ta viết lại phép toán:

Không có số tràn (hay số tràn =0) là dấu hiệu của kết quả âm (hoặc =0) và ta phải lấy bù 1, thêm dấu trừ để đọc kết quả cuối cùng: (01110)1 = - 10001

Thí dụ 4: Tính 10110 - 10110

A = 10110 và B = 10110 ⇒ (B)1 = 01001

Trong phép cộng đầu tiên không có số tràn, kết quả xem như số âm (hoặc =0) lấy bù 1 của kết quả ta được A-B=00000.

b/ - A >B

Kết quả A-Blà số dương, phép tính được thực hiện theo qui tắc sau:

Cộng A với (B) 1 rồi thêm 1 và không quan tâm tới số nhớ cuối cùng

Thí dụ 5: Tính 110101 - 100110 dùng số bù 1

A = 110101 và B = 100110 ⇒ (B)1 = 011001

Bỏ qua số nhớ cuối cùng, ta được kết quả A-B=001111.

Trong hệ thập phân đó là bài toán 5310 - 3810 = 1510.

Trong phép tính có số tràn chứng tỏ kết quả là số dương. Số 1 cộng thêm vào xem như lấy từ số nhớ đem qua.

Tóm lại, để thực hiện bài toán trừ, A-B, ta cộng A với bù 1 của B. Dựa vào sự có mặt hay không của số tràn mà có biện pháp xử lý kết quả:

- Nếu số tràn =0, kết quả là số âm (hoặc =0) , ta phải lấy bù 1 của kết quả và thêm dấu - để đọc.

- Nếu số tràn =1, ta cộng thêm 1 vào để có kết quả cuối cùng (bỏ qua bit tràn) là một số dương.

0