PSD Series #1: Floating Point
1. Representasi dan Karakteristik Floating Point
Floating point diperlukan untuk merepresentasikan bilangan real. Terdapat dua notasi yang digunakan pada umumnya.
Fixed-Point
Sama dengan merepresentasikan sebuah bilangan dalam basis dua. Komputer menyediakan N integer bits dan M fraction bits. Pada umumnya 4 integer bits dan 4 fraction bits. Representasi fixed-point ada dua juga, yaitu Sign-Magnitude dan Two's Complement
Contoh Sign-Magnitude:
6.7510 = 0110.11002
Akan disimpan sebagai
01101100SM (Perhatikan bahwa akan dipakai satu bit paling significant pada integer bits untuk menyimpan sign)
-7.510 = 0111.10002
Akan disimpan sebagai
11111000SM (Perhatikan bahwa sign negatif)
Contoh Two's Complement:
6.7510 = 0110.11002
Akan disimpan sebagai
011011002S (Sama seperti Sign-Magnitude bila positif)
7.510 = 0111.10002
Akan disimpan sebagai
011110002S
-7.510 = 0111.10002
Lakukan teknik 2's complement (Flip semua bits dan +1)
100010002S
Floating-Point
Mirip dengan scientific notation.
N = ±M × BE
Dimana:
M = Mantissa
B = Base
E = Exponent
Dimana Mantissa memiliki titik di sebelah kanan digit paling significant bukan 0.
Optimisasi Mantissa, Karena setiap floating point representation akan disimpan dalam binary, diketahui bahwa bit pertama mantissa akan selalu 1.
Optimisasi Exponent, Untuk mendapatkan nilai mantissa, N akan digeser geser sehingga titiknya berada di sebelah kanan digit paling significant bukan 0. Gesernya dapat ke kiri atau ke kanan. Sehingga Exponent dapat bernilai negatif. Agar mencakup range bilangan yang luas, maka E harus dapat menyimpan bilangan negatif pula. Akan disimpan dalam bentuk Biased Exponent (+127 pada IEEE 754 Single Precision)
Presisi dan Kasus Khusus
Ada dua jenis presisi yang umum digunakan pada IEEE-754, yaitu single precision dan double precision.
Single Precision: Menyimpan 32 bit, 1 sign bit, 8 exponent bits, 23 fraction bits, bias = 127
Double Precision: Menyimpan 64 bit, 1 sign bit, 11 exponent bits, 52 fraction bits, bias = 1023
Contoh Floating-Point Representation (Single Precision):
-58.2510 = 111010.012 = 1.1101001×25
1 Sign bits = 1 (Negative)
8 Biased Exponent bits = (127+5) = 132 = 100001002
23 Fraction bits = 110 1001 0000 0000 0000 0000 (Perhatikan bahwa bit pertama sebelum titik diabaikan)
1 100 0010 0 110 1001 0000 0000 0000 0000
Hexadecimal = 0xC269000
Ada pula kasus lain selain bentuk biasa:
- 0, Sign = X, Exponent = 00000000, Fraction 00000000000000000000000
- ∞, Sign = 0, Exponent = 11111111, Fraction 00000000000000000000000
- -∞, Sign = 1, Exponent = 11111111, Fraction 00000000000000000000000
- NaN, Sign = X, Exponent = 11111111, Fraction non-zero
Ada pula kasus denormalized, yaitu saat bilangan yang akan direpresentasikan terlalu kecil (Terlalu mendekati 0) sehingga exponent tidak sanggup mencapainya, Dipastikan dalam representasi Floating pointnya pada single precision menjadi N = ±M × B-126
Perhatikan, bahwa Mantissa kini most significant bitsnya tidak 1 lagi. Karena kasus tersebut, bisa saja terjadi underflow, atau bilangan terlalu kecil untuk direpresentasikan.
Rounding
Ada empat jenis rounding floating point yang umum dipakai:
- Down: Pembulatan selalu ke 0
- Up: Pembulatan selalu ke 1
- Toward Zero: Pembulatan ke 0 terdekat (Sama seperti aturan baku scientific notation)
- To nearest: Pembulatan ke desimal terdekat
2. Operasi Floating Point
Langkah-langkah dalam melakukan operasi floating point ialah
- Cari exponent bits dan fraction bits
- Jadikan bentuk basis 2
- Bandingkan pangkat
- Geser mantissa sesuai kebutuhan agar pangkatnya sama
- Jumlahkan Mantissa
- Normalisasikan mantissa
- Pembulatan (Khusus saat melebihi kapasitas fraction bits)
- Jadikan format floating point lagi.
Leave a Comment