Sabtu, 16 November 2019

FLOATING POINT

PENJELASAN FLOATING POINT , FLOATING POINT 32Bit dan 64Bit

Apa Itu Floating Point ?


Floating-point (bilangan titik mengembang) adalah sebuah bilangan pendekatan dari bilangan real untuk mempresentasikan sebuah nilai yang sangat besar. Karena itu lah, floating-point biasa ditemukan di sebuah sistem yang mengandung bilangan yang sangat kecil atau sangat besar, yang membutuhkan kecepatan dalam pemrosesannya. Bilangan tersebut dapat direpresentasikan sebagai notasi ilmiah, yaitu berupa angka pecahan desimal yang dikalikan dengan 10 dengan pangkat bilangan bulat.

Notasi ilmiah dapat direpresentasikan menjadi dua bagian, yakni mantisa dan eksponen. Bagian mantisa menentukan digit dalam angka tersebut, sementara eksponen menentukan nilai berapa besar pangkat pada bagian mantisa tersebut (pada posisi titik desimal). Contoh 231700000 dapat dituliskan dalam bentuk floating-point seperti berikut : 2317E5 (artinya 2317 x 10 pangkat 5).


CPU biasanya hanya bisa melakukan operasi berdasarkan bilangan bulat (integer) saja dan tidak mendukung operasi berdasarkan floating-point. Sehingga dibutuhkan unit yang dikhususkan untuk menangani operasi floating-point, yaitu FPU atau Floating-Point Unit (co-processor).

Format bilangan Floating Point distandarkan oleh IEEE 754 yang dibuat pada tahun 1985 oleh Institute of Electrtical and Electronics Engineers (IEEE). Standarisasi floating point berdasarkan tiga komponen : 
  • Bit tanda (S)
  • Bit Eksponen (E)
  • Bit Mantisa (M)

Floating Point 32Bit (Single-Precision)

Bilangan Floating point 32Bit terdiri 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).


Bilangan Floating Point 64Bit (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).




sumber :


Tidak ada komentar:

Posting Komentar

Aplikasi CRUD Sederhana Dengan CodeIgniter

CodeIgniter adalah sebuah web application network yang bersifat open source yang digunakan untuk membangun aplikasi php dinamis . CodeIgnite...