2012-08-26 110 views
7

Có ai biết các bước để chia số nguyên nhị phân không dấu bằng bộ phận không khôi phục không?Thuật toán phân chia không khôi phục

Thật khó để tìm thấy bất kỳ nguồn trực tuyến nào tốt.

tức là nếu A = 101110B = 010111

làm thế nào để chúng tôi tìm A divided by B trong không khôi phục lại phân chia? Các thanh ghi trông giống như thế nào trong mỗi bước?

Cảm ơn!

+0

Xem mã nguồn của [trang web này] (http://www.ecs.umass.edu/ece/koren/arith/simulator/NRDiv/). –

Trả lời

20

(câu trả lời của tôi là muộn một chút động trả lời Nhưng tôi hy vọng nó sẽ hữu ích cho du khách trong tương lai.)

Algorithm cho phi khôi phục bộ phận được đưa ra trong hình dưới đây:

enter image description here

trong vấn đề này, cổ tức (A) = 101.110, tức là 46, và Divisor (B) = 010.111, tức là 23.

khởi:

Set Register A = Dividend = 000000 
Set Register Q = Dividend = 101110 
(So AQ = 000000 101110 , Q0 = LSB of Q = 0) 
Set M = Divisor = 010111, M' = 2's complement of M = 101001 
Set Count = 6, since 6 digits operation is being done here. 

Sau khi chúng tôi bắt đầu thuật toán, tôi đã trình bày trong bảng dưới đây:

Trong bảng, SHL(AQ) denotes shift left AQ by one position leaving Q0 blank.

Tương tự như vậy, một biểu tượng hình vuông ở vị trí Q0 biểu thị, it is to be calculated later

enter image description here

Hy vọng tất cả các bước rõ ràng từ bảng !!!

-1

1) Thiết lập giá trị của thanh ghi A là 0 (N bit)
2) Thiết lập giá trị của thanh ghi M như Divisor (N bit)
3) Thiết lập giá trị của thanh ghi Q như cổ tức (N bit)
4) Nối A với Q {A, Q}
5) Lặp lại số "n" sau đây (ở đây n là số lượng bit trong số chia): Nếu bit dấu bằng A bằng 0, hãy dịch A và Q kết hợp, để lại 1 bit, và trừ M từ A. Khác thay đổi A và Q kết hợp, còn lại 1 bit và thêm M thành A Bây giờ nếu bit dấu A bằng 0, thì đặt Q [0] là 1 , hãy đặt Q [0] là 0
6) Cuối cùng, nếu bit dấu của A bằng 1 thì thêm M vào A.
7) Gán A làm số dư và Q làm thương.