OPERASI PERKALIAN • Dibanding operasi + dan -, mempunyai kompleks baik dari Hardware dan Software. • Coba dikalikan 1011 X 1101 = … ??? Operasi perkalian pada bilangan integer un-sign Diagram operasi perkalian Rule Algoritma : Control Logic membaca bit-bit multiplier satu persatu. 1. Jika bit Q0 = 1, maka multiplikan ditambahkan ke reg A (perintah ADD) Setelah itu seluruh bit pada reg C, A, Q digeser kekanan 1 bit ( perintah SHIFT) 2. Bila Q0=0, maka hanya perintah SHIFT saja, tidak terjadi penambahan. Contoh Perkalian pada Bilangan Unsign 1011 X 1101 = … ??? Nilai 1101 disimpan dalam register Q sebagai Multiplier . Nilai 1011 disimpan dalam register M sebagai Multiplikan. Contoh Hasil C 0 A 0000 Q 1101 inisialisasi nilai 0 0 1011 0101 1101 1110 ADD SHIFT ----- siklus 1 0 0010 1111 SHIFT 0 0 1101 1111 0110 1111 1 0 0001 1000 1111 1111 Product di reg A dan Q ADD SHIFT ---- siklus 2 ---- Siklus 3 ADD SHIFT ----- siklus 4 • Algoritma di atas, hanya digunakan untuk bilangan Unsign (Tidak Bertanda). • Untuk bilangan Bertanda (Sign), yaitu Bilangan dengan komplemen-2, perlu ALGORITMA BOOTH. Contoh : 1101 bilangan unsign senilai dgn 13d 1101 bilangan komplemen2 senilai dgn -3d Algoritma Booth 1. 2. Multiplier dan Multiplikan di reg Q dan M Terdapat 1 reg di sebelah kanan Q0 sehingga Q3 Q2 Q1 Q0 Q-1 3. Hasil perkalian muncul di reg A dan Q 4. Reg A dan Q-1 diinisialisasi Nol 5. Contol Logic mengecek bit pada Q0 dan Q-1 a. Bila sama (1 dan 1 atau 0 dan 0), maka bit pada reg A, Q, Q-1 digeser kekanan 1 bit. (perintah SHIFT saja). b. Bila BEDA 1 dan 0 maka multiplikan ditambahkan ke reg A, lalu SHIFT – insert di Q3 dng bit 1 0 dan 1 maka multiplikan dikurangi dengan A, lalu SHIFT. – insert di Q3 dng bit 0 Contoh jika Q = 0011 ( 3des) dan M = 1001 (-7des) A 0000 1001 1100 Q 0011 0011 1001 Q-1 0 0 1 initial A+M SHIFT --- siklus 1 1110 0100 1 SHIFT ---- siklus 2 0101 0010 0100 1010 1 0 A-M SHIFT -------- siklus 3 0001 0101 0 SHIFT ----- siklus 4 Contoh • Pada Bilangan UnSign 1101x0110 .Pada Bilangan Sign(Komplemen2) 1010x0101 • 128 64 32 16 8 4 2 1 • 32 • 1 0 0 0 1 0 = -30 • dimana +30 = 11110 komplemen 1 = 00001 Komplemen 2 = 00010 JADI SALAH CING Untuk data 8 bit ==>>> +30 = 00011110 -30 = ……..???? komplemen 1 = 11100001 ---- komplemen 2 = 11100010 OPERASI PEMBAGIAN • Kebalikan dari perkalian, • pembagian (Division) adalah suatu bentuk dari pengurangan yang dilakukan berulang-ulang. • proses ini juga dapat dilakukan pada rangkaian logika dengan cara pengurangan dan penggeseran ke kiri (menggunakan shift left register). Berikut adalah aturan dari pembagian: • Kurangkan bilangan pembagi (Divisor) dari MSB bilangan yang akan dibagi (Dividend), lihat hasil pengurangan. Bila hasilnya 1 atau positif : • Berarti hasil pembagian (Product) adalah 1. Setelah itu hasil pengurangan digeser ke kiri satu bit, dan dimulai lagi pengurangan oleh bilangan pembagi (Divisor). Bila hasilnya 0 atau negatif : • Berarti hasil pembagian (Product) adalah 0. Dalam hal ini sebelum digeser ke kiri harus ditambah dulu dengan bilangan pembagi (Divisor). • Setelah digeser ke kiri satu bit, dimulai lagi proses pengurangan oleh bilangan pembagi. • Pengurangan oleh bilangan pembagi dilakukan dengan penjumlahan komplemen2. • Bila dalam penjumlahan tersebut terdapat pindahan (Carry), maka carry tersebut diabaikan. FLOWCHART PROSES PEMBAGIAN START DIVIDENT + (-DIVISOR) PROSES PEMBA GIAN =0? Y PRINT “ HASIL BAGI” T GESER KEKIRI SATU BIT Y HASIL BAGI = 1? T DIVIDENT + DIVISOR END Perhatikan contoh berikut : 1010 : 410 = 10102 : 1002 Tambah dgn bil. pembagi Catatan : Karena ada hasil pengurangan yang negatif, maka digit yang dihasilkan setelah itu adalah digit pecahan, sehingga hasil yang benar 10,12 atau 2,510. Integer Division • Once you have committed to implementing multiplication, implementing division is a relatively easy next step that utilizes much of the same hardware • Want to find quotient, Q, and remainder, R, such that D=QxV+R • Restoring division for unsigned integers o Algorithm adapted from the traditional “pen and paper” approach o Algorithm is of time complexity O(n) for n-bit dividend o Uses essentially the same ALU hardware as the Booth multiplication algorithm • » Adder / subtractor unit • » Double wide shift register AQ that can be shifted to the left • » Register for the divisor • » Control logic • For two’s complement numbers, must deal with the sign extension “problem” • Algorithm: o Load M with divisor, AQ with dividend (using sign bit extension) o Shift AQ left 1 position o If M and A have same sign, A<--A-M, otherwise A<--A+M o Q0<--1 if sign bit of A has not changed or (A=0 AND Q=0), otherwise Q0=0 and restore *A o Repeat shift and +/- operations for all bits in Q o Remainder is in A, quotient in Q » If the signs of the divisor and the dividend were the same, quotient is correct, otherwise, Q is the 2’s complement of the quotien