·
Bilangan
Floating-Point 32-bit (single-precision)
Bilangan
floating-point 32-bit tersusun atas (Gambar 0.1↓):
- 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)
|
Mantisa=0
|
Mantisa≠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
|
∞
|
Bikan bilangan (NAN=not-a-number)
|
|
Table
0.1
Nilai
eksponen di format floating-point 32-bit
Saat
nilai mantisa (M) dinormalisasi, most significant bit (MSB) selalu 1.
Namun, bit MSB ini tidak perlu disertakan secara eksplisit di field mantisa
(Tabel 0.1↑).
Nilai mantisa yang sebenarnya adalah 1.M, sehingga nilai bilangan
floating-pointnya menjadi:
Di
bilangan subnormal, nilai mantisa 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
pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe
data float (bahasa C, C++, Java) dan single (Pascal, VB,
MATLAB).
float
anumber; // 32-bit single precision number
int
main(){
anumber
= -1.1245;
...
return
0;
}
Contoh 1
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
Contoh
bilangan floating-point 32-bit Figure 0.2 B = 0x3E60000
Bilangan Floating-Point 64-bit (double-precision)
Bilangan
floating-point 64-bit tersusun atas (Gambar 0.6↓):
- 1 bit tanda (S),
- 11 bit eksponen (E), dan
- 52 bit untuk mantisa (M)
Format
bilangan floating-point 64-bit Figure 0.6
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) (Tabel 0.2↓);
- 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;
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)
|
|
Table
0.2
Nilai
eksponen di format floating-point 64-bit
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.995).
Dalam
pemrograman, suatu bilangan single-precision ini dideklarasikan dengan tipe
data double (bahasa C, C++, Java).
double
anumber; // 64-bit double precision number
int
main(){
anumber
= -1.1245;
...
return
0;
}
Contoh 1
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
Contoh bilangan floating-point
64-bit Figure 0.7 B = 0x3FD5000000000000 = 0.328125
Sumber :
http://didik.blog.undip.ac.id/2012/06/01/bilangan-floating-point/
Tidak ada komentar:
Posting Komentar