Algoritma pembagian yang tidak memulihkan

Adakah yang tahu langkah-langkah untuk membagi bilangan bulat biner tidak bertanda menggunakan pembagian tanpa pengembalian?

Sulit untuk menemukan sumber yang bagus secara online.

yaitu jika A = 101110 dan B = 010111

bagaimana kita menemukan A dibagi dengan B dalam pembagian yang tidak mengembalikan? Seperti apa bentuk register di setiap langkah?

Terima kasih!

(Jawaban saya sedikit terlambat dibalas. Tapi saya harap ini akan berguna bagi pengunjung di masa mendatang)

Algoritma untuk pembagian tanpa pengembalian diberikan pada gambar di bawah ini:

Dalam soal ini, Pembagi (A) = 101110, yaitu 46, dan Pembagi (B) = 010111, yaitu 23.

Inisialisasi:

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.

Setelah ini, kita memulai algoritme, yang saya tunjukkan dalam tabel di bawah ini:

Pada tabel, SHL(AQ) menunjukkan pergeseran ke kiri AQ sebanyak satu posisi dengan membiarkan Q0 kosong.

Demikian pula, simbol persegi pada posisi Q0 menunjukkan, ini akan dihitung kemudian

Semoga semua langkah sudah jelas dari tabel tersebut !!!

Komentar (1)
  1. Tetapkan nilai register A sebagai 0 (N bit)
  2. Tetapkan nilai register M sebagai Pembagi (N bit)
  3. Tetapkan nilai register Q sebagai Pembagi (N bit)
  4. Gabungkan A dengan Q {A,Q}
  5. Ulangi "N" kali berikut ini (di sini N adalah jumlah bit dalam pembagi):
    Jika bit tanda dari A sama dengan 0, geser A dan Q digabungkan ke kiri sebanyak 1 bit dan kurangi M dari A, jika tidak, geser A dan Q digabungkan ke kiri sebanyak 1 bit dan tambahkan M ke A Sekarang jika bit tanda dari A sama dengan 0, maka setel Q[0] sebagai 1, jika tidak setel Q[0] sebagai 0
  6. Terakhir, jika bit tanda dari A sama dengan 1, maka tambahkan M ke A.
  7. Tetapkan A sebagai sisa dan Q sebagai hasil bagi.
Komentar (5)