Bilangan Floating Point
Assalamualaikum warahmatullahi wabarakatuh.
. 2. Rentang Angka dan Presisi
3. Format Bilangan Floating-Point
Saya akan menjelaskan apa itu Floating point, mulai dari definisi, kegunaan, serta apappun itu yang berkaitan tentang floating point. Semua akan di jelaskan secara lengkap pada artikel kali ini.
1. Pengertian Bilangan Floating Point
Bilangan floating point adalah format bilangan yang merepresentasikan bilangan yang dapat dikatakan sangat besar maupun sangat kecil. didalam bilangan floating point ada dua bagian penting, yakni manista dan bagian eksponen (E). untuk bagian manista menentukan tentang digit dalam angka tersebut, sedangkan eksponen (E) menentukan berapa besar pangkat pada bagian manista itu (pada posisi desimal).
Sebagai contoh, bilangan 278100000 dan bilangan 0.0000251 dapat direpresentasikan dalam bentuk bilangan floating point: 2781E5 dan 451E-7 (artinya 2781 * 10 pangkat 5, dan 251 * 10 pangkat -7).
Dalam bahasa pemrograman, khususnya keluarga bahasa pemrograman C, bilangan titik mengambang direpresentasikan dengan tipe data float.
Floating-point merepresentasi bilangan nyata dalam bentuk
persamaan:
N
= m × Re
|
Dimana:
m merupakan bagian bilangan pecahan yang biasa
disebut significand atau mantissa.
e adalah bagian bilangan
bulat yang biasa disebut exponent.
R merupakan basis dari
suatu sistem bilangan.
. 2. Rentang Angka dan Presisi
Rentang angka dapat direpresentasikan dalam mesin apapun tergantung dari jumlah bit dalam eksponen, sedangkan akurasi pecahan atau presisi pada akhirnya ditentukan oleh jumlah bit dalam mantissa. Semakin tinggi jumlah bit dalam eksponen, maka semakin besar rentang angka yang dapat direpresentasikan. Misalnya, rentang angka yang mungkin pada format bilangan biner floating-point yang menggunakan 6-bits untuk merepresentasi besarnya eksponen adalah 2-64 sampai 2+64, dimana nilai ini setara dengan rentang 10-19 sampai 10+19.
Presisi ditentukan oleh jumlah bit yang digunakan untuk merepresentasi mantissa. Hal ini biasanya direpresentasikan sebagai angka desimal presisi. Konsep presisi sebagaimana didefinisikan terhadap notasi floating-point dapat dijelaskan secara sederhana sebagai berikut. Jika mantissa disimpan dalam jumlah n bit, maka itu dapat merepresentasi sebuah bilangan desimal antara 0 dan 2n-1 seperti mantissa yang disimpan sebagai bilangan bulat tak-bertanda (unsigned). Jika M adalah bilangan terbesar seperti 10M-1 kurang dari atau sama dengan 2n-1, maka M adalah presisi yang dinyatakan sebagai angka desimal presisi. Misalnya, jika mantissa dinyatakan dalam 20 bit, maka angka desima presisi dapat ditemukan sekitar 6, seperti 220-1 sama dengan 1 048 575 dimana sedikit lebih kecil dari 106-1.
3. Format Bilangan Floating-Point
Format bilangan floating-point biner telah distandarkan oleh IEEE 754-2008 (atau ISO/IEC/IEEE 60559:2011), yaitu meliputi format 16-bit (half), 32-bit (single-precision), 64-bit (double-precision), 80-bit (double-extended) dan 128-bit (quad-precision). Pada artikel ini hanya akan dibahas tentang format dasar, yaitu 32-bit dan 64-bit.
A. Bilangan Floating-Point 32-bit (single-precision)
Bilangan floating-point 32-bit tersusun atas:
• 1 bit tanda (S)
• 8 bit eksponen (E)
• 23 bit mantisa (M)
Bit tanda (S) menyatakan bilangan positif jika S = 0 dan negatif jika S = 1. Field eksponen adalah basis 2. Nilai eksponen bisa negatif atau positif untuk menyatakan bilangan yang sangat kecil atau sangat besar. Format eksponen yang digunakan adalah excess-127. Nilai 127 ditambahkan dari nilai eksponen sebenarnya (Exp), yaitu Exp = E − 127. Dengan excess-127, nilai E akan selalu positif dengan jangkauan 0 sampai 255.
Nilai ekstrem adalah untuk E = 0 dan E = 255:
E = 0 menyatakan bilangan NOL (jika M = 0) dan subnormal (jika M ≠ 0)
E = 255 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0)
Nilai normal adalah 1 ≤ E ≤ 254 yang menunjukkan nilai eksponen sebenarnya dari -126 sampai 127. Contoh: Emin(1) = −126, E(50) = −77, dan Emax(254) = 127.
Tabel nilai eksponen di format floating-point 32-bit
Eksponen (E)
|
Mantissa = 0
|
Mantissa ≠ 0
|
Persamaan
|
0
|
0, -0
|
Subnormal
|
(−1)S × 0.bit signifikan × 2−126
|
1-254
|
Nilai ternormalisasi
|
(−1)S × 0.bit signifikan × 2E−127
| |
255
|
∞
|
Bukan bilangan (NAN=not-a-number)
|
Saat nilai mantissa (M) dinormalisasi, most significant bit (MSB) selalu 1. Namun, bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa (Tabel diatas). Nilai mantissa yang sebenarnya adalah 1.M, sehingga nilai bilangan floating-pointnya menjadi:
Di bilangan subnormal, nilai mantissa sebenarnya adalah 0.M, sehingga bilangan floating-pointnya menjadi:
Dengan mantissa 23 bit ini ditambah 1 bit implisit, total presisi dari representasi floating-point 32-bit ini adalah 24 bit atau sekitar 7 digit desimal (yaitu 24 × log10(2) = 7,225). Dalam bahasa pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe data float (C, C++, Java) atau single (Pascal, VB, MATLAB).
float anumber; // 32-bit single precision number
int main(){
anumber = -1.1245;
...
return 0;
}
Contoh :
Bilangan floating-point dinyatakan dengan B = 0x3E600000 . Nyatakan B sebagai bilangan pecahan desimal.
Representasi bilangan floating-point 32-bit dapat dinyatakan seperti Gambar 0.2 ↓.
Jadi, B = 0x3E6300000 menyatakan bilangan floating-point 0.21875
Figure 0.2 Contoh bilangan floating-point 32-bit B = 0x3E60000
B. Bilangan Floating-Point 64-bit (double-precision)
Bilangan floating-point 64-bit tersusun atas:
• 1 bit tanda (S)
• 11 bit eksponen (E)
• 52 bit mantisa (M)
Seperti halnya dengan bilangan single-precission, bit tanda (S) menyatakan bilangan positif jika S = 0 dan negatif jika S = 1. Field eksponen adalah basis 2. Nilai eksponen bisa negatif atau positif untuk menyatakan bilangan yang sangat kecil atau sangat besar. Format eksponen yang digunakan adalah excess-1023. Nilai 1023 ditambahkan dari nilai eksponen sebenarnya (Exp), yaitu Exp = E − 1023. Dengan excess-1023, nilai E akan selalu positif dengan jangkauan 0 sampai 2047.
Nilai ekstrem adalah untuk E = 0 dan E = 2047:
E = 0 menyatakan bilangan NOL (jika M = 0) dan subnormal (jika M ≠ 0)
E = 255 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0)
Nilai normal adalah 1 ≤ E ≤ 2047 yang menunjukkan nilai eksponen sebenarnya dari -1022 sampai 1023. Contoh: Emin(1) = −1022, E(100) = −923, dan Emax(254) = 1023.
Tabel nilai eksponen di format floating-point 64-bit
Eksponen (E)
|
Mantissa = 0
|
Mantissa ≠ 0
|
Persamaan
|
0
|
0, -0
|
Subnormal
|
(−1)S × 0.bit signifikan × 2−1022
|
1-2046
|
Nilai ternormalisasi
|
(−1)S × 0.bit signifikan × 2E−1023
| |
2047
|
∞
|
Bukan bilangan
(NAN=not-a-number) |
Nilai mantisa (M) dinormalisasi, yang berarti most significant bit (MSB) selalu 1. Bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa. Nilai mantisa sebenarnya adalah 1.M, sehingga nilai bilangan floating-pointnya menjadi:
Dengan mantissa 52 bit ini ditambah 1 bit implisit, total presisi dari representasi floating-point 32-bit ini adalah 53 bit atau sekitar 16 digit desimal (yaitu 53 × log10(2) = 15.955). Dalam pemrograman, suatu bilangan double-precision ini dideklarasikan dengan tipe data double (C, C++, Java).
double anumber; // 64-bit double precision number
int main(){
anumber = -1.1245;
...
return 0;
}
Contoh :
Bilangan floating-point dinyatakan dengan B = 0x3FD5000000000000 . Nyatakan B sebagai bilangan pecahan desimal.
Representasi bilangan floating-point 64-bit dapat dinyatakan seperti Gambar 0.7 ↓.
Jadi, B = 0x3FD5000000000000 menyatakan bilangan floating-point 0.328125
Figure 0.7 Contoh bilangan floating-point 64-bit B = 0x3FD5000000000000 = 0.328125.
Sumber :
https://id.wikipedia.org/wiki/Floating-point#:~:targetText=Floating%2Dpoint%20atau%20bilangan%20titik,dan%20bagian%20eksponen%20(E).
https://rekayasa-komputer.blogspot.com/2014/11/floating-point-representation-dan.html
https://bespus-community.blogspot.com/2012/11/Bilangan-Floating-Point-dan-Metode-Komplemen-Bilangan.html
http://didik.blog.undip.ac.id/2012/06/01/bilangan-floating-point/
Sumber :
https://id.wikipedia.org/wiki/Floating-point#:~:targetText=Floating%2Dpoint%20atau%20bilangan%20titik,dan%20bagian%20eksponen%20(E).
https://rekayasa-komputer.blogspot.com/2014/11/floating-point-representation-dan.html
https://bespus-community.blogspot.com/2012/11/Bilangan-Floating-Point-dan-Metode-Komplemen-Bilangan.html
http://didik.blog.undip.ac.id/2012/06/01/bilangan-floating-point/
Komentar
Posting Komentar