Saturday, November 16, 2019

Bilangan Floating Point



Floating point adalah sebuah bilangan yang digunakan untuk menggambarkan sebuah nilai yang sangat besar atau sangat kecil. Bilangan tersebut dapat diwujudkan dalam notasi ilmiah, yaitu berupa angka pecahan desimal  dikalikan dengan angka 10 pangkat bilagnan tertentu. Bilangan seperti ini dapat direpresentasikan menjadi dua bagian, yaitu bagianmantisa dan bagian eksponen (E). Bagian mantisa menentukan digit dalam angka tersebut, sedangkan eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (jarak dari titik posisi desimal). Contoh :
Misalkan terdapat sebuah bilangan 8934000000 maka bilangan ini dapat dituliskan dalam bentuk bilangan floating point. 8934E6 yang secara matematis artinya : 8934 x 10⁶
Bilangan yang mempunyai nilai pecahan (misalnya 3.2575) dapat direpresentasikan dengan dua format bilangan: fixed-point dan floating-point.
Bilangan pecahan fixed-point mempunyai jangkauan yang dibatasi oleh jumlah digit signifikan yang digunakan untuk merepresentasikan bilangan tersebut. Misalnya bilangan pecahan desimal sepuluh digit. Bilangan tersebut dinyatakan dengan fixed-point, yaitu satu digit untuk tanda, empat digit untuk angka utuh dan lima digit untuk angka pecahan. Jangkauan bilangan tersebut adalah 0 sampai 9999 untuk angka utuh dan 0.00001 sampai 0.99999 untuk angka pecahan, sehingga nilai bilangan yang mungkin adalah -9999.99999 sampai +9999.99999 dengan presisi 0.00001. 
Contoh bilangan tersebut yang valid adalah -9.00102 dan 100.99998. Bilangan ±10000 tidak bisa dinyatakan dengan sistem bilangan sepuluh digit ini. Sedangkan bilangan 0.000005 tidak memenuhi derajat presisi yang diinginkan, walaupun berada dalam jangkauan bilangan. Bilangan tersebut akan dibulatkan ke 0.00000 atau 0.00001, yang berarti ada selisih sebesar ±0.000005 dari nilai yang diinginkan.
Dalam aplikasi saintifik, mungkin akan terdapat bilangan yang sangat besar atau sangat kecil. Bilangan tersebut harus dapat direpresentasikan dengan tepat (presisi), yaitu menggunakan floating-point. Bilangan floating-point direpresentasikan dengan mantissa yang berisi digit signifikan dan eksponen dari radix R

Format: mantisa × Reksponen

Represensasi bilangan floating-point seringkali dinormalisasi terhadap radixnya, misalnya 1, 5 × 1044atau 1, 253 × 10 − 36Format 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). Di blog ini hanya membahas tentang format dasar, yaitu 32-bit dan 64-bit.

Bilangan Floating-Point 32-bit (single-precision)

Bilangan floating-point 32-bit tersusun atas  



  • 1 bit tanda (S),
  • 8 bit eksponen (E), dan
  • 23 bit untuk mantisa (M)

Figure 0.1 Format bilangan floating-point 32-bit
Bit tanda (S) menyatakan bilangan positif jika S=0 dan negatif jika S=1.
Field eksponen adalah radix 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;


Eksponen (E)
Mantissa=0
Mantissa ≠ 0
Persamaan
0
0, -0
subnormal
( − 1)S × 0.bit signifikan × 2 − 126
1-254
Nilai ternormalisasi
( − 1)S × 1.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).

Contoh



Nyatakan format floating-point 32-bit dari bilangan A =  − 0.21875
Dari Contoh , nilai bilangan − A =  + 0.21875 adalah 0x3E600000. Dengan mengubah field S=1, maka bilangan A dinyatakan dengan 0xBE600000.


Figure 0.5 Bilangan negatif A =  − 0.21875 dinyatakan dengan 0xBE600000

Bilangan Floating-Point 64-bit (double-precision)

 

Bilangan floating-point 64-bit tersusun atas



  •    1 bit tanda (S),
  •    11 bit eksponen (E), dan  
  •    52 bit untuk mantisa (M)

    Figure 0.6 Format bilangan floating-point 64-bit
Seperti halnya dengan bilangan single-precission, bit tanda (S) menyatakan bilangan positif jika S=0 dan negatif jika S=1. Field eksponen adalah radix 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=2047 menyatakan bilangan TAK TERHINGGA (jika M = 0) dan NAN/not-a-number (jika M ≠ 0);

    Nilai normal adalah 1 ≤ E ≤ 2046 yang menunjukkan nilai eksponen sebenarnya dari -1022 sampai 1023
    Contoh: Emin(1) =  − 1022, E(100) =  − 923 dan Emax(2046) = 1023

Eksponen (E)
Mantissa=0
Mantissa ≠ 0
Persamaan
0
0, -0
subnormal
( − 1)S × 0.bit signifikan × 2 − 1022
1-2046
Nilai ternormalisasi
( − 1)S × 1.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).

Contoh



Nyatakan format floating-point 32-bit dari bilangan A =  − 0.328125
Dari Contoh , nilai bilangan − A =  + 0.328125 adalah 0x3FD5000000000000. Dengan mengubah field S=1, maka bilangan A dinyatakan dengan 0xBFD5000000000000 

Figure 0.9 Bilangan negatif A =  − 0.328125 dinyatakan dengan 0x3FD5000000000000

Sumber : 


http://didik.blog.undip.ac.id/2012/06/01/bilangan-floating-point/


https://tugasnumpuk3.wordpress.com/2013/10/20/floating-point-arithmetic/







No comments:

Post a Comment