Bab 3. Aritmetika Komputer • Dasar: – Mengapa desimal? – Mengapa biner? – Konversi: (167)10 = ( ? )2 ; (1010001101)2 = ( ? )10 – Heksadesimal: (10 1000 1101)2 = (28d)16
• Bagaimana dengan bilangan negatif? – 2’s complement – -3 = 1101 dalam bentuk 4-bit 2’s complement; – Verifikasi: -3+3 = 1101 + 0011 = (1) 0000 = 0
MMD 2405
Andi WRE
1
Representasi Bilangan Negatif •
Besar tanda
000 = +0 001 = +1 010 = +2 011 = +3 100 = -0 101 = -1 110 = -2 111 = -3
One's Complement
Two's Complement
000 = +0 001 = +1 010 = +2 011 = +3 100 = -3 101 = -2 110 = -1 111 = -0
000 = +0 001 = +1 010 = +2 011 = +3 100 = -4 101 = -3 110 = -2 111 = -1
• Isu - isu: kemudahan operasi, jumlah angka nol, keseimbangan, … • Mana yang terbaik? Mengapa? MMD 2405
Andi WRE
2
Bilangan MIPS (word) • 32 bit signed numbers (two’s complement) 0000 0000 0000 ... 0111 0111 1000 1000 1000 ... 1111 1111 1111
0000 0000 0000 0000 0000 0000 0000two = 0ten 0000 0000 0000 0000 0000 0000 0001two = + 1ten 0000 0000 0000 0000 0000 0000 0010two = + 2ten 1111 1111 0000 0000 0000
1111 1111 0000 0000 0000
1111 1111 0000 0000 0000
1111 1111 0000 0000 0000
1111 1111 0000 0000 0000
1111 1111 0000 0000 0000
1110two 1111two 0000two 0001two 0010two
= = = = =
+ + – – –
2,147,483,646ten 2,147,483,647ten 2,147,483,648ten 2,147,483,647ten 2,147,483,646ten
1111 1111 1111 1111 1111 1111 1101two = – 3ten 1111 1111 1111 1111 1111 1111 1110two = – 2ten 1111 1111 1111 1111 1111 1111 1111two = – 1ten
• Kisaran representasi: [– 2,147,483,648ten , MMD 2405
+ 2,147,483,647ten]
Andi WRE
3
Operasi 2’s complement • Untuk bilangan positif, 2's comp: bit tanda (0) + unsigned biner • Menegasi sebuah bilangan 2's comp: membalikkan semua bit dan tambah 1 – -5 = -(0101) = 1011
• Perpanjangan tanda: – Contoh: • Representasi sebuah bilangan 4-bit 2's comp dalam 8 bit : kopi bit terdepan (bit tanda) ke bit yang depannya 0010
-> 0000 0010
1010
-> 1111 1010
– 16 bit MIPS dikonversikan ke 32 bit untuk operasi aritmetika MMD 2405
Andi WRE
4
Tambah/kurang dalam bentuk 2’s complement
• Operasi 2's comp cukup mudah 0101 (5) + 0010 (2) 0111 (7)
0111 (7) 0110 (6) + 1100 (-4) + 0101 (5) (1)0011 (3) 1011 (-5)
• Pengurangan menggunakan penjumlahan dengan bilangan negatif • Overflow: penambahan dua buah bilangan n-bit tidak menghasilkan nilai yang benar – Alasan: hasilnya diluar kisaran representasi. Untuk representasi n-bit 2's complement, kisarannya adalah ....... – Terminologi overflow seringkali menjerumuskan, ini tidak berarti ada “tumpahan nilai” [−2n−1, +2n−1 − 1]
– Selama hasilnya dalam kisaran, tidak ada overflow – Pertimbangkan operasi A + B dan A - B Dapatkah overflow terjadi jika B adalah 0? Dapatkah overflow terjadi jika A adalah 0?
MMD 2405
Andi WRE
5
Perkalian • Lebih rumit daripada penjumlahan – Dilakukan dengan pergeseran dan penambahan • Lebih memakan waktu dan tempat dibandingkan penjumlahan • Lihatlah sebuah versi perkalian berdasarkan algoritma sekolah dasar 0010 (yang dikali) x 1011 (pengali) 0010 0010 + 0010 (munculnya produk parsial) 0010110 (akumulasi dari produk parsial) MMD 2405
Andi WRE
6
Implementasi dari Perkalian Start
Multiplier0 = 1
Multiplier0 = 0
1. Test Multiplier0
1a. Add multiplicand to product and place the result in Product register
Multiplicand Shift left
2. Shift the Multiplicand register left 1 bit
64 bits 3. Shift the Multiplier register right 1 bit
Multiplier Shift right
64-bit ALU
32 bits 32nd repetition?
No: < 32 repetitions
Product Write
Control test
64 bits
Yes: 32 repetitions
Done
Where Multiplier0 is the LSB of the multiplier.
MMD 2405
Andi WRE
7
Bilangan Floating Point (FP) •
Kita membutuhkan sebuah cara untuk representasi – Bilangan dengan pecahan, seperti: 3.1416 – Bilangan yang sangat kecil, seperti: .000000001 – Bilangan yang sangat besar, seperti 3.15576 x 109
•
Representasi:
– Tanda, eksponen, pecahan: (–1)sign x fraction x 2exponent – Lebih banyak bit untuk pecahan memberikan akurasi lebih – Lebih banyak bit untuk eksponen meningkatkan kisaran •
Standar floating point IEEE 754: – Yang paling populer dan juga diadopsi oleh komputer MIPS – Presisi tunggal: 1 bit tanda, 8 bit eksponen, 23 bit pecahan – Presisi ganda: 1 bit tanda, 11 bit eksponen, 52 bit pecahan
MMD 2405
Andi WRE
8
IEEE standards untuk Floating Point • Presisi tunggal (32 bits)
• Presisi ganda (64 bits)
MMD 2405
Andi WRE
9
IEEE FP standard • Bit “1” terdepan secara implisit – Pecahan 23 atau 32-bit dengan bit terdepan dengan bobot ½ • Eksponen di-”bias” untuk memudahkan pengurutan – Bias dari 127 untuk presisi tunggal dan 1023 untuk presisi ganda • Ringkasan: nilai = (–1)sign x (1+fraction) x 2exponent – bias • Contoh: konversi -0.75 ke standar IEEE FP presisi tunggal – Desimal biner: • -0.75 = - ( ½ + ¼ )
– Mendapatkan pecahan: • -.11 = -1.1 x 2-1 = (-1) x (1+0.1) x 2-1 pecahan = 0.1
– Mendapatkan eksponen • Eksponen = nilai asli + bias = -1 + 127 = 126 = 01111110
– Mendapatkan bit tanda: tanda = 1 – IEEE presisi tunggal: 10111111010000000000000000000000 MMD 2405
Andi WRE
10
Definisi IEEE 754 untuk pola - pola biner khusus
MMD 2405
Andi WRE
11
Penjumlahan FP Start
1. Compare the exponents of the two numbers. Shift the smaller number to the right until its exponent would match the larger exponent
2. Add the significands
3. Normalize the sum, either shifting right and incrementing the exponent or shifting left and decrementing the exponent
Overflow or
Yes
underflow? No
Exception
4. Round the significand to the appropriate number of bits
No
Still normalized?
Yes
Done
MMD 2405
Andi WRE
12
Topik Lanjut dari Operasi FP • Perkalian / pembagian menjadi rumit • Sebagai tambahan untuk overflow, dapat juga terjadi “underflow” – Hasil terlalu kecil untuk direpresntasikan • Akurasi dapat menjadi masalah besar – IEEE 754 menambahkan 2 buah bit ekstra, penjaga (guard) dan pembulatan (round) – Empat mode round – Positif dibagi nol menghasilkan “tidak terhingga” – Nol dibagi nol menghasilkan “bukan bilangan” – Kerumitan - kerumitan lainnya • Implementasi standar dapat sangat “tricky” MMD 2405
Andi WRE
13