Integer Arithmatic Pembagian Dasar dari algoritma pembagian adalah perhitungan di atas kertas, dan prosesnya meliputi pengulangan shift, penambahan dan pengurangan
Divisor Quotient Devident Partial Remainder Remainder
Proses dilanjutkan sampai semua bit-bit devident habis digunakan. Pembagian Unsign Binari Integer Proses : Bit-bit dari devident diteliti dari kiri ke kanan sampai ditemukan satu set bit yang berharga lebih besar atau sama dengan divisornya (divisor dapat membagi devident). Sampai dengan event ini terjadi 1 dituliskan pada quotient dan divident dikurangi dengan divisor. Hasilnya disebut partial remainder. Kemudian bit-bit tambahan dari devident digabungkan dengan partial remainder sampai lebih besar atau sama dengan divisor. Dan seperti sebelumnya divisor dikurangkan dari bilangan ini untuk menghasilkan partial remainder yang baru. Proses dilanjutkan sampai semua bit-bit devident habis digunakan.
Flowchart Pembagian Sign Binary Integer
Keterangan : Divisor disimpan dalam register M, dan divident dalam register Q. Pada setiap step register A dan Q bersama-sama digeser ke kiri satu bit. Register A dikurangi register M untuk menentukan apakah A dapat membagi partial remainder. Jika dapat (A >= 0) Q0 mendapatkan nilai 1. Jika tidak Q0 mendapatkan nilai 0 dan register M harus ditambahkan kembali ke register A untuk mendapatkan nilai sebelumnya. Counter dikurangi 1 dan proses dilanjutkan untuk n step.
Akhirnya qoutient berada pada register Q dan remainder berada pada register A. Proses ini juga dapat diterapkan pada bilangan negatif 2’s complement. Algoritma di atas dapat diringkas sebagai berikut : Load divisor ke register M dan divident ke register A,Q. divident harus dinyatakan berupa 2n bit 2’s complement. Contoh : 4 bit 0111 menjadi 0000 0111 1001 menjadi 1111 1001 Geser A,Q ke kiri 1 bit. Jika M,A mempunyai tanda yang sama, lakukan A←A-M, jika tidak sama A←A+M.
Operasi di atas berhasil jika tanda dari A sama sebelum dan sesudah operasi. Jika pembagian berhasil atau A = 0, maka Q0 ← 1. Jikas pembagian tidak berhasil atau A ≠ 0, maka Q0 ← 0 dan restore harga A sebelumnya. Ulangi langkah 2 sampai 4 selama masih ada bit-bit di Q. Sisa dari pembagian disimpan di register A. Jika tanda dari divisor dan divident sama maka quotient berada di Q, jika tidak sama maka quotient adalah 2’s comlement dari Q.
Contoh : Pada pembagian (-7) : 3 dan 3 : (-7) menghasilkan remainder yang berbeda. Hal ini karena remainder didefinisikan sebagai berikut : D = Q * M + R Keterangan : D = Divident Q = Quotient M = Divisor R = Remainder
Contoh : 7 : 3 M = 0011 A Q Proses 0000 0111 Initial 0000 1110 Shift 1101 1110 Subtract 0000 1110 Restore 0001 1100 Shift 1110 1100 Subtract 0001 1100 Restore 0011 1000 Shift 0000 1000 Subtract 0000 1001 Set Q0 = 1 0001 0010 Shift 1110 0010 Subtract 0001 0010 Restore Hasil pembagian disimpan di register Q dan sisanya di register A
Contoh : 7 : (-3) M = 1101 A Q Proses 0000 0111 Initial 0000 1110 Shift 1101 1110 Add 0000 1110 Restore 0001 1100 Shift 1110 1100 Add 0001 1100 Restore 0011 1000 Shift 0000 1000 Add 0000 1001 Set Q0 = 1 0001 0010 Shift 1110 0010 Add 0001 0010 Restore Karena tanda Q dan M awalnya tidak sama maka hasil bagi adalah 2’s compl dari Q, dan sisanya di A