Bagian 4
Floating Point
Pembahasan
g pecahan
p
Bilangan
biner
Representasi floating point standar IEEE 754
Pengkodean floating point
Normalized
Denormalized
Nilai khusus
Rounding
Operasi floating point
Floating point pada C
Representasi bilangan :
i
bi bi1
binary point
b2 b1 b0 .b1 b2 b3
1/2
/
1/4
1/8
4
2
1
b=
bj
bk 2
k = j
Bit sebelah
b l h kiri
k binary
b
point
merepresentasikan bobot 2k
Bit sebelah kanan binary
point merepresentasikan
bobot 2-k
2j
Contoh :
101.112 merepresentasikan bilangan 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2
=4+0+1++
= 5
3
Bilangan
a ga mendekati
d a 1 memiliki bentuk
b u 0.111111
0
2
x x 2y
Bilangan
Bil
lain
l i harus
h
mengulangi
l
i representasi
t i bit berkali-kali
b k li k li
Nilai
1/3
1/5
1/10
Representasi
0.0101010101[01]2
0.001100110011[0011]2
0.0001100110011[0011] 2
0.0001100110011[0011]
Akurasi dapat dinaikkan dengan menambah bit, tetapi tetap saja tidak
dapat merepresentasikan secara eksak
V = x x 2y
exp
k bit
frac
n bit
s (sign
g ) sepanjang
p j g satu bit mengkodekan
g
bit tanda s
exp (exponent) sepanjang k bit mengkodekan eksponen E
frac (fraction) sepanjang n bit mengkodekan signifikan M
Nilai denormalized
Bila bit-bit exp semuanya nol (exp = 0000)
Nilai khusus
Bila bit-bit exp semuanya satu (exp = 1111)
Nilai Normalized
Berlaku untuk kondisi
Eksponen
k
Ed
diinterpretasikan
k dalam
d l
bentuk
b
k bias
b
E = e bias
e : nilai unsigned yang dikonversikan langsung dari exp
bias : nilai bias = 2k-1 1, dimana k adalah banyaknya bit exp
single precision : bias = 127, e = 1 s/d 254, E = -126 s/d 127
double precision : bias = 1023, e = 1 s/d 2046, E = -1022 s/d 1023)
M = 1+f
pecahan f = 0.xxxx
0.xxx x2, dimana x adalah bit
bit-bit
bit pada frac
M berkisar antara 1.0 (frac= 0000) s/d 2.0 (frac = 1111 )
s
exp
p
frac
1 bit
k bit
n bit
10
Nilai Denormalized
Berlaku untuk kondisi exp = 0000
Nilai kode
eksponen E = 1 bias
bias = 2k-1 1, dimana k adalah banyaknya bit exp
signifikan M = f
Kasus denormalized
e p = 0000,
exp
000 0 frac = 0000
000 0
Merepresentasikan nilai 0
Terdapat perbedaan antara nilai +0 and 0, berdasarkan nilai bit s
Bilangan
Bil
yang sangatt dekat
d k td
dengan 0.0
00
Sifat gradual underflow, semakin kecil semakin presisi
exp
p
frac
1 bit
k bit
n bit
11
Nilai Khusus
Berlaku untuk kondisi exp = 1111
Kasus :
exp = 1111, frac = 0000
Merepresentasikan nilai
(tak hingga/infinity)
positiff + bila
b l s=0
0 dan
d negatiff bila
b l s=1
exp
p
frac
1 bit
k bit
n bit
12
NaN
-Normalized
+Denorm
-Denorm
0
+0
+Normalized
+
NaN
13
Distribusi Nilai
Misalkan : floating point 6 bit, format menyerupai IEEE
sign s = 1 bit, eksponen exp = 3 bit, pecahan frac = 2 bit
Seluruh range nilai :
-15
-10
-5
10
15
-1
-15
-10
-0,5
-5
D
Denormalized
li d
0
0
0,5
N
Normalized
li d
Infinity
f
10
1
15
3 2
exp
frac
15
2E
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-6
-6
-5
-4
-3
-2
-1
0
+1
+2
+3
+4
+5
+6
+7
7
-
1/64
1/64
1/32
1/16
1/8
1/4
1/2
1
2
4
8
16
32
64
128
-
kasus
denormalized
normalized
Perhitungan nilai E
denormalized : E = 1 - bias
normalized : E = e - bias
bias = 2k-1 1 = 24-1 1 = 7
normalized
li d
inf, NaN
16
0000
0000
0000
0000
0000
0001
0001
0110
0111
0111
1110
1110
1111
0
1/8
2/8
0
1/8
2/8
000
001
010
kasus
denormalized
110
111
000
001
6/8
7/8
0
1/8
6/8
7/8
8/8
9/8
111
000
001
7/8
0
1/8
15/8
8/8
9/8
Perhitungan nilai M
denormalized : M = f
normalized : M = 1 + f
f = 0.xxx2, x adalah bit-bit frac
normalized
110
111
000
6/8
7/8
14/8
15/8
tak hingga
17
0
0
0
0
0
0
0
0
0
0
Perhitungan nilai V =
0000 000
0000 001
0000 010
0000
0000
0001
0001
6/8*1/64
7/8*1/64
8/8*1/64
9/8*1/64
110
111
000
001
1/8*1/64 = 1/512
2/8*1/64 = 2/512
=
=
=
=
6/512
7/512
8/512
9/512
0110 111
0111 000
0111 001
15/8*1/2 = 15/16
8/8*1
8/8
1
= 1
9/8*1
= 9/8
1110 110
1110 111
1111 000
14/8*128 = 224
15/8*128
/
= 240
+ tak hingga
(1)s
xMx
2E
D k i i
Deskripsi
exp
Zero
0000 0000
0.0
0000 0001
126
2 23 X 2126
1.4 X 1045
Denorm terbesar
0000 1111
(1.0 ) X 2126
1.2 X 1038
0001 0000
1.0 X 2126
1.2
1 2 X 1038
Satu
0111 0000
1.0
Normalized terbesar
11 10 1111
1110
11 11
(2.0
(2
0 )) X 2127
3.4 X 1038
f
frac
Nil i Numerik
Nilai
N
ik
19
frac = 100000011100100000000002
frac diperoleh dengan membuang bit 1 di depan dan menambah 10 buah nol
K
Konstruksi
t k i bagian
b i exp (8 bit)
bias = 127; E = 13; e = E + bias = 140; diperoleh exp = 100011002
4
6
4
0
E
4
0
0
0100 0110 0100 0000 1110 0100 0000 0000
1 bit tanda
8 bit exp
23 bit frac
20
1.40
1
40
Zero
1
Round down (-)
1
Round up (+)
2
Nearest Even (default) 1
1.60
1
60
1
1
2
2
1.50
1
50
1
1
2
2
2.50
2
50
2
2
3
2
1.50
1
50
1
2
1
2
Catatan :
zero = pembulatan ke arah nol; round down = pembulatan ke bawah;
round up = pembulatan ke atas; nearest even = pembulatan terdekat
21
1.23
1.24
1.24
1.24
Pembulatan
< nilai tengah, bulat terdekat
> nilai tengah, bulat terdekat
nilai tengah, bulat ke genap
nilai tengah, bulat ke genap
Hasil
Nilai akhir
10.002 2
10.012 2 1/4
11.002 3
10.102 2 1/2
23
Dari
D i int atau
t float ke
k double
Konversi secara eksak, double memiliki range dan presisi lebih besar
Ariane 5
Meledak 37 detik setelah
peluncuran
Membawa muatan, satelit
seharga 500 juta dollar
Ringkasan
Floating point standar IEEE digunakan untuk merepresentasikan
bilangan
reall dalam
bentuk
bil
d l
b t k V = (1)
( 1)s x M x 2E
Floating point digunakan untuk melakukan komputasi bilangan
sangat besar (|V | 0)
0), dan bilangan sangat dekat dengan nol
(|V | 1)
Floating point dikodekan dalam tiga kasus : untuk nilai
denormalized, normalized dan nilai khusus (tak hingga dan NaN)
Hasil operasi floating point dapat mengalami pembulatan
(rounding)
26