Anda di halaman 1dari 13

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 One's Complement Two's Complement


000 = +0 000 = +0 000 = +0
001 = +1 001 = +1 001 = +1
010 = +2 010 = +2 010 = +2
011 = +3 011 = +3 011 = +3
100 = -0 100 = -3 100 = -4
101 = -1 101 = -2 101 = -3
110 = -2 110 = -1 110 = -2
111 = -3 111 = -0 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 0000 0000 0000 0000 0000two = 0ten
0000 0000 0000 0000 0000 0000 0000 0001two = + 1ten
0000 0000 0000 0000 0000 0000 0000 0010two = + 2ten
...
0111 1111 1111 1111 1111 1111 1111 1110two = + 2,147,483,646ten
0111 1111 1111 1111 1111 1111 1111 1111two = + 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0000two = – 2,147,483,648ten
1000 0000 0000 0000 0000 0000 0000 0001two = – 2,147,483,647ten
1000 0000 0000 0000 0000 0000 0000 0010two = – 2,147,483,646ten
...
1111 1111 1111 1111 1111 1111 1111 1101two = – 3ten
1111 1111 1111 1111 1111 1111 1111 1110two = – 2ten
1111 1111 1111 1111 1111 1111 1111 1111two = – 1ten

• Kisaran representasi:
[– 2,147,483,648ten , + 2,147,483,647ten]

MMD 2405 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) 0111 (7) 0110 (6)
+ 0010 (2) + 1100 (-4) + 0101 (5)
0111 (7) (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 1. Test Multiplier0 = 0


Multiplier0

1a. Add multiplicand to product and


place the result in Product register

Multiplicand
2. Shift the Multiplicand register left 1 bit Shift left
64 bits

3. Shift the Multiplier register right 1 bit


Multiplier
64-bit ALU Shift right
32 bits
No: < 32 repetitions
32nd repetition? Product Control test
Write

Yes: 32 repetitions 64 bits

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

Anda mungkin juga menyukai