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 bilangan 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⁶
Bagian mantisanya adalah 8934 dan bagian eksponennya
adalah E6
Cara penulisan angka seperti ini
merupakan cara singkat untuk menuliskan angka yang nilainya sangat besar maupun
sangat kecil atau disebut floating point number. Bilangan seperti ini banyak
digunakan dalam pemrosesan grafik dan kerja ilmiah. Proses aritmatika bilangan
floating point memang lebih rumit dan prosesor membutuhkan waktu yang lebih
lama untuk mengerjakannya, karena mungkin akan menggunakan beberapa siklus
detak (clock cycle) prosesor.
Oleh karena
itu beberapa jenis komputer menggunakan prosesor sendiri untuk menangani
bilangan floating point. Prosesor yang khusus menangani bilangan floating point
disebutFloating Pont Unit (FPU) atau disebut juga dengan nama math
co-processor.
Notasi
floating-point dapat digunakan untuk merepresentasikan baik bilangan yang
sangat besar (|N| » 0), bilangan yang sangat kecil atau dekat dengan nol (|N| «
1), maupun bilangan yang terdiri dari keduanya. Floating-point membuat proses
operasi aritmatika menjadi relatif lebih mudah. 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
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd … dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd … dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.
Sebagai contoh, bilangan desimal 0,0003754 dan 1234
dapat direpresentasi dalam notasi floating point sebagai 3,754 × 10−4 dan 1,234 × 103. Bilangan heksadesimal 257,ABF dapat direpresentasi
sebagai 2,57ABF × 162. Dalam kasus
bilangan biner normalized, angka
terdepan (MSB) selalu ‘1’ dan dengan demikian tidak perlu disimpan secara
eksplisit. Bilangan biner campuran 1100,10112 dapar direpresentasi dalam notasi
floating point sebagai 0,1101011 × 23 =
0,1101011e+0011. Disini, 0,1101011 adalah mantissa dan e+0011 menunjukan bahwa
eksponennya adalah +3. Contoh lainnya, 0,0001112 dapat ditulis sebagai
0,111e-0011, dengan 0,111 adalah mantissa dan e-0011 menunjukkan eksponen dari
-3. Jika kita ingin merepresentasikan mantissa menggunakan delapan bit, maka
angka 0,1101011 dan 0,111 dapat ditulis seperti 0,11010110 dan 0,11100000.
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.
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.
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.
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 bilangan 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⁶
Bagian mantisanya adalah 8934 dan bagian eksponennya
adalah E6
Cara penulisan angka seperti ini
merupakan cara singkat untuk menuliskan angka yang nilainya sangat besar maupun
sangat kecil atau disebut floating point number. Bilangan seperti ini banyak
digunakan dalam pemrosesan grafik dan kerja ilmiah. Proses aritmatika bilangan
floating point memang lebih rumit dan prosesor membutuhkan waktu yang lebih
lama untuk mengerjakannya, karena mungkin akan menggunakan beberapa siklus
detak (clock cycle) prosesor.
Oleh karena
itu beberapa jenis komputer menggunakan prosesor sendiri untuk menangani
bilangan floating point. Prosesor yang khusus menangani bilangan floating point
disebutFloating Pont Unit (FPU) atau disebut juga dengan nama math
co-processor.
Notasi
floating-point dapat digunakan untuk merepresentasikan baik bilangan yang
sangat besar (|N| » 0), bilangan yang sangat kecil atau dekat dengan nol (|N| «
1), maupun bilangan yang terdiri dari keduanya. Floating-point membuat proses
operasi aritmatika menjadi relatif lebih mudah. 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
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd … dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.
Bagian bilangan pecahan m merupakan p-digit bilangan dengan bentuk (±d.dddd … dd), dimana semua digit d adalah bilangan bulat antara 0 dan R-1. Jika digit terdepan (sebelak kiri) dari m bukan angka nol, maka bilangan ini dapat dikatakan sebagai normalized.
Sebagai contoh, bilangan desimal 0,0003754 dan 1234
dapat direpresentasi dalam notasi floating point sebagai 3,754 × 10−4 dan 1,234 × 103. Bilangan heksadesimal 257,ABF dapat direpresentasi
sebagai 2,57ABF × 162. Dalam kasus
bilangan biner normalized, angka
terdepan (MSB) selalu ‘1’ dan dengan demikian tidak perlu disimpan secara
eksplisit. Bilangan biner campuran 1100,10112 dapar direpresentasi dalam notasi
floating point sebagai 0,1101011 × 23 =
0,1101011e+0011. Disini, 0,1101011 adalah mantissa dan e+0011 menunjukan bahwa
eksponennya adalah +3. Contoh lainnya, 0,0001112 dapat ditulis sebagai
0,111e-0011, dengan 0,111 adalah mantissa dan e-0011 menunjukkan eksponen dari
-3. Jika kita ingin merepresentasikan mantissa menggunakan delapan bit, maka
angka 0,1101011 dan 0,111 dapat ditulis seperti 0,11010110 dan 0,11100000.
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.
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.
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.
1. 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.
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).
2. 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.
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: