FLOATING POINT
FLOATING POINT
1. Pengertian 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.
Bagian – Bagian Floating Point
a) Mantisa adalah bagian yang berfungsi menentukan digit
dalam angka tersebut.
b) Eksponen berfungsi untuk menentukan nilai berapa
besar pangkat pada bagian mantisa tersebut (jarak dari titik posisi desimal)
eksponen menentukan nilai berapa besar pangkat pada bagian mantisa
tersebut (jarak dari titik posisi desimal).
Persamaan pada Floating Point
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
Bentuk Bilangan Floating Point
Bilangan Floating Point memiliki bentuk umum : + m*be dimana m(disebut
juga dengan mantissa), mewakili bilangan pecahan dan umumnya dikonversi ke
bilangan binernya, mewakili bilangan exponentnya, sedangkan b mewakili radix (basis)
dari exponen
2. Aritmetika Floating Point Penjumlahan / Pengurangan
Langkah - langkah yang dilakukan untuk
menambah/mengurangkan dua bilangan floating point
a) Bandingkan kedua bilangan, dan ubah ke bentuk yang sesuai
pada bilangan dengan nilai exponensial lebih kecil
b) Lakukan operasi penjumlahan / pengurangan
c) Lakukan normalisasi dengan ’menggeser’ nilai mantissa dan
mengatur nilai exponensialnya
Contoh : Jumlahkan dua bilangan floating point 1,1100
* 24 dan 1,1000 * 22
v Sesuaikan : 1,1000 * 22 diubah menjadi
0,0110 * 24
v Jumlahkan : hasil penjumlahan 10,0010 *
24
v Normalisasi : hasil setelah dinormalisasi
adalah 0,1000 * 26 ( dianggap bit yang diijinkan setelah koma adalah 4)
3. Aritmetika Floating Point Perkalian
Perkalian dari dua bilangan floating point dengan
bentuk X = mx * 2a dan Y = mx * 2b setara
dengan X * Y = (mx * my) * 2a+b
Algoritma umum untuk perkalian dari bilangan floating
point terdiri dari tiga langkah:
a) Hitung hasil exponensial dengan menjumlahkan nilai
exponent dari kedua bilangan
b) Kalikan kedua bilangan mantissa
Contoh : Perkalian antara dua bilangan floating point
X = 1,000 * 22 dan Y = 1,010 *21
v Tambahkan bilangan exponennya : 2 + (1) = 3
v Kalikan mantissa: 1,0000 * 1,010 =
1,010000
v Hasil perkaliannya adalah 1,0100 * 23
4. Aritmetika Floating Point Pembagian
Pembagian dari dua bilangan floating point dengan
bentuk X = mx * 2a dan Y = mx * 2b setara
dengan X / Y = (mx / my) * 2ab
a) Algoritma umum untuk pembagian dari bilangan floating
point terdiri dari tiga langkah :
b) Hitung hasil exponensial dengan mengurangkan nilai
exponent dari kedua bilangan
c) Bagi kedua bilangan mantissa
d) Normalisasi hasil akhir
Contoh : Pembagian antara dua bilangan floating point
X = 1,0000 * 22 dan Y = 1,0100 * 21
Ø Kurangkan bilangan exponennya : 2 – (1) = 1
Ø Hasilpembagiannya adalah 0,1101 * 21
Representasi Bilangan Floating Point
Utk merepresentasikan floating point diperlukan :
a) lokasi atau register penyimpanan computer dgn ukuran
memadai utk menyimpan semua digit signifikan dari bilangan tersebut
b) ruang penyimpanan tambahan utk menyimpan posisi ppoint
tersebut, ruang tambahan ini biasanya berada di dalam lokasi yg sama atau
terpisah.
5. FORMAT BILANGAN FLOATING POINT
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.
• 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).
6
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.
• 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).
Nearly all hardware and programming languages use
floating-point numbers in the same binary formats, which are defined in
the IEEE 754 standard.
The usual formats are 32 or 64 bits in total length:
Format
|
Total bits
|
Significand bits
|
Exponent bits
|
Smallest number
|
Largest number
|
Single
precision
|
32
|
23 +
1 sign
|
8
|
ca.
1.2 ⋅ 10-38
|
ca.
3.4 ⋅ 1038
|
Double
precision
|
64
|
52 +
1 sign
|
11
|
ca.
2.2 ⋅ 10-308
|
ca.
1.8 ⋅ 10308
|
Note that there are some peculiarities:
The actual bit sequence is the sign bit first,
followed by the exponent and finally the significand bits.
Ø The exponent does not have a sign; instead an exponent
bias is subtracted from it (127 for single and 1023 for double precision).
This, and the bit sequence, allows floating-point numbers to be compared and
sorted correctly even when interpreting them as integers.
Ø The significand’s most significant digit is omitted and
assumed to be 1, except for subnormal numbers which are marked by an
all-0 exponent and allow a number range beyond the smallest numbers given in
the table above, at the cost of precision.
Ø There are separate positive and a negative zero values,
differing in the sign bit, where all other bits are 0. These must be considered
equal even though their bit patterns are different.
Ø There are special positive and negative infinity values,
where the exponent is all 1-bits and the significand is all 0-bits. These are
the results of calculations where the positive range of the exponent is
exceeded, or division of a regular number by zero.
Ø There are special not a number (or NaN) values
where the exponent is all 1-bits and the significand is not all
0-bits. These represent the result of various undefined calculations (like
multiplying 0 and infinity, any calculation involving a NaN value, or
application-specific cases). Even bit-identical NaN values must not be
considered equal.
DAFTAR PUSTAKA :
Komentar
Posting Komentar