Bag 04 - Floating Point
-
Upload
muhammad-fajrie-hidayat -
Category
Documents
-
view
55 -
download
0
description
Transcript of Bag 04 - Floating Point
![Page 1: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/1.jpg)
Departemen Teknik Elektro Institut Teknologi Bandung2005
EC3003 - Sistem Komputer
Bagian 4Floating Point
![Page 2: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/2.jpg)
Floating Point 4-2
Pembahasan
Bilangan pecahan binerRepresentasi floating point standar IEEE 754Pengkodean floating point
NormalizedDenormalizedNilai khusus
RoundingOperasi floating pointFloating point pada C
![Page 3: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/3.jpg)
Floating Point 4-3
Bilangan Pecahan Biner
Representasi bilangan :
b =
Bit sebelah kiri binary pointmerepresentasikan bobot 2k
Bit sebelah kanan binary point merepresentasikan bobot 2-k
bi bi–1 b2 b1 b0 b–1 b–2 b–3 b–j• • •• • • .124
2i–1
2i
• • ••• •
1/21/41/8
2–j
binary point
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¾
bk ⋅2k
k=− j
i∑
![Page 4: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/4.jpg)
Floating Point 4-4
Bilangan Pecahan Biner
Menggeser binary point ke kiri → membagi dengan 2sama dengan shift kanancontoh : 101.112 = 5 ¾
10.1112 = 2 + 0 + ½ + ¼ + 1/8 = 2 7/8
Menggeser binary point ke kanan → mengalikan dengan 2sama dengan shift kiricontoh : 1011.12 = 8 + 0 + 2 + 1 + ½ = 11½
Bilangan mendekati 1 memiliki bentuk 0.111111…2
Contoh : 63/64 = 1/2+1/4+1/8+1/16+1/32+1/64 = 0.1111112Direpresentasikan dengan notasi 1.0 – ε
![Page 5: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/5.jpg)
Floating Point 4-5
Keterbatasan Pecahan Biner
Memiliki panjang kode terbatasTidak dapat merepresentasikan bilangan 1/3 secara eksak
Dapat mereprentasikan secara eksak bila berbentuk x x 2y
Bilangan lain harus mengulangi representasi bit berkali-kali
Nilai Representasi1/3 0.0101010101[01]…2
1/5 0.001100110011[0011]…2
1/10 0.0001100110011[0011]…2
Akurasi dapat dinaikkan dengan menambah bit, tetapi tetap saja tidak dapat merepresentasikan secara eksak
![Page 6: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/6.jpg)
Floating Point 4-6
Bilangan Floating Point
Merupakan aproksimasi dari bilangan realMerepresentasikan bilangan real dalam bentuk V = x x 2y
Tidak selalu memberikan hasil eksak, dapat terjadi pembulatan
Digunakan dalam melakukan komputasi :bilangan sangat besar (|V | » 0), danbilangan sangat dekat dengan nol (|V | « 1)
Pecahan biner tidak efisien dalam mengkodekan bilangan bernilai besarContoh : 5 x 2100 tersusun atas pola bit 101 diikuti 100 buah nol
![Page 7: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/7.jpg)
Floating Point 4-7
Floating Point Standar IEEE
IdeBentuk V = x x 2y ingin direpresentasikan dengan hanya memberikan nilai x dan y-nya saja
Representasi floating point standar IEEE 754V = (–1)s x M x 2E
Bit tanda s menentukan apakah bilangan negatif (s=1) atau positif (s=0)Signifikan M adalah bilangan pecahan, berkisar antara 1 dan 2 – ε atau antara 0 dan 1 – εEksponen E adalah bobot nilai bilangan
Standar IEEE 754Ditentukan tahun 1985 Bentuk standar aritmetika floating point
Sebelumnya, terdapat berbagai macam formatDidukung oleh seluruh CPU
![Page 8: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/8.jpg)
Floating Point 4-8
Pengkodean Floating PointRepresentasi floating point IEEE
V = (–1)s x M x 2E
Kode biner floating point
s (sign) sepanjang satu bit mengkodekan bit tanda sexp (exponent) sepanjang k bit mengkodekan eksponen Efrac (fraction) sepanjang n bit mengkodekan signifikan M
Ukuran (tipe data float pada C)Single precision : s=1 bit, exp=8 bit , frac=23 bit → total 32 bit Double precision : s=1 bit, exp=11 bit, frac=52 bit → total 64 bit
s exp frac
1 bit k bit n bit
![Page 9: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/9.jpg)
Floating Point 4-9
3 Kasus Kode Floating Point
Berdasarkan pola bit exp, pengkodean floating point dibagi menjadi tiga kasus :
Nilai normalizedKasus paling umumBila bit-bit exp tidak semua nol (exp ≠ 000…0) atau tidak semua satu (exp ≠ 111…1)
Nilai denormalizedBila bit-bit exp semuanya nol (exp = 000…0)
Nilai khusus Bila bit-bit exp semuanya satu (exp = 111…1)
![Page 10: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/10.jpg)
Floating Point 4-10
Nilai Normalized
Berlaku untuk kondisi exp ≠ 000…0 dan exp ≠ 111…1
Eksponen E diinterpretasikan dalam bentuk biasE = 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 127double precision : bias = 1023, e = 1 s/d 2046, E = -1022 s/d 1023)
Signifikan M adalah bilangan pecahanM = 1 + f
pecahan f = 0.xxx…x2, dimana x adalah bit-bit pada fracM berkisar antara 1.0 (frac= 000…0) s/d 2.0 – ε (frac = 111…1 )
s exp frac
1 bit k bit n bit
![Page 11: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/11.jpg)
Floating Point 4-11
Nilai Denormalized
Berlaku untuk kondisi exp = 000…0
Nilai kodeeksponen E = 1 – bias
bias = 2k-1 – 1, dimana k adalah banyaknya bit exp
signifikan M = fpecahan f = 0.xxx…x2, dimana x adalah bit-bit pada frac
Kasus denormalizedexp = 000…0, frac = 000…0
Merepresentasikan nilai 0Terdapat perbedaan antara nilai +0 and –0, berdasarkan nilai bit s
exp = 000…0, frac ≠ 000…0Bilangan yang sangat dekat dengan 0.0Sifat gradual underflow, semakin kecil semakin presisi
s exp frac
1 bit k bit n bit
![Page 12: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/12.jpg)
Floating Point 4-12
Nilai Khusus
Berlaku untuk kondisi exp = 111…1Kasus :exp = 111…1, frac = 000…0
Merepresentasikan nilai ∞ (tak hingga/infinity)positif +∞ bila s=0 dan negatif –∞ bila s=1
Hasil operasi yang mengalami overflowHasil kali dua bilangan sangat besar
Pembagian dengan nol (1.0/0.0 = −1.0/−0.0 = +∞, 1.0/−0.0 = −∞)exp = 111…1, frac ≠ 000…0
Disebut Not-a-Number (NaN)Merepresentasikan situasi dimana tidak ada nilai numeriknya
Contoh : sqrt(–1), ∞ − ∞
s exp frac
1 bit k bit n bit
![Page 13: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/13.jpg)
Floating Point 4-13
3 Kasus Kode Floating Point
Ringkasan pengkodean bilangan real floating point :1. Normalized2. Denormalized3. Nilai khusus
Tak hingga (infinity)Not a Number
NaNNaN
+∞−∞
−0
+Denorm +Normalized-Denorm-Normalized
+0
![Page 14: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/14.jpg)
Floating Point 4-14
Distribusi Nilai
Misalkan : floating point 6 bit, format menyerupai IEEEsign s = 1 bit, eksponen exp = 3 bit, pecahan frac = 2 bit
Perhatikan : distribusi semakin padat ketika mendekati nol
-15 -10 -5 0 5 10 15Denormalized Normalized Infinity
-15 -10 -5 0 5 10 15
-1 -0,5 0 0,5 1
Seluruh range nilai :
Nilai antara -1.0 hingga +1.0 :
![Page 15: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/15.jpg)
Floating Point 4-15
Contoh Kode Floating Point
Diberikan representasi floating point 8-bit (tiny)Satu bit tanda s terletak di most significant bit Empat bit berikutnya adalah eksponen expTiga bit terakhir adalah frac
Bentuk menyerupai format IEEETerdapat kasus normalized, denormalizedTerdapat representasi untuk nol, tak hingga dan NaNRepresentasi nilai dihitung : V = (–1)s x M x 2E
dimana M diturunkankan dari frac dan E diturunkan dari exp
s exp frac02367
1/4
![Page 16: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/16.jpg)
Floating Point 4-16
Contoh Kode Floating Pointexp e E 2E kasus
0000 0 -6 1/64 denormalized0001 1 -6 1/64 normalized0010 2 -5 1/320011 3 -4 1/160100 4 -3 1/80101 5 -2 1/40110 6 -1 1/20111 7 0 11000 8 +1 21001 9 +2 41010 10 +3 81011 11 +4 161100 12 +5 321101 13 +6 641110 14 +7 128 normalized1111 15 - - inf, NaN
Perhitungan nilai Edenormalized : E = 1 - biasnormalized : E = e - bias
bias = 2k-1 – 1 = 24-1 – 1 = 7
2/4
![Page 17: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/17.jpg)
Floating Point 4-17
Contoh Kode Floating Pointexp frac f M kasus
0000 000 0 00000 001 1/8 1/80000 010 2/8 2/8… denormalized0000 110 6/8 6/80000 111 7/8 7/80001 000 0 8/80001 001 1/8 9/8…0110 111 7/8 15/80111 000 0 8/80111 001 1/8 9/8… normalized1110 110 6/8 14/81110 111 7/8 15/81111 000 - - tak hingga
Perhitungan nilai Mdenormalized : M = f normalized : M = 1 + f
f = 0.xxx2, x adalah bit-bit frac
3/4
![Page 18: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/18.jpg)
Floating Point 4-18
Contoh Kode Floating Points exp frac Perhitungan nilai V = (–1)s x M x 2E
0 0000 000 00 0000 001 1/8*1/64 = 1/5120 0000 010 2/8*1/64 = 2/512…0 0000 110 6/8*1/64 = 6/5120 0000 111 7/8*1/64 = 7/5120 0001 000 8/8*1/64 = 8/5120 0001 001 9/8*1/64 = 9/512…0 0110 111 15/8*1/2 = 15/160 0111 000 8/8*1 = 10 0111 001 9/8*1 = 9/8…0 1110 110 14/8*128 = 2240 1110 111 15/8*128 = 2400 1111 000 + tak hingga
4/4
bilangan terdekat ke nol
bilangan denormalized terbesar
Bilangan normalized terkecil
terdekat ke 1 (dr bawah)
terdekat ke 1 (dari atas)
bilangan normalized terbesar
![Page 19: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/19.jpg)
Floating Point 4-19
Nilai Single Precision (float)
Single precision : s=1 bit, exp=8 bit , frac=23 bit → total 32 bit
Deskripsi exp frac Nilai Numerik
Zero 00…00 00…00 0.0
Denorm pos terkecil 00…00 00…01 2– 23 X 2–126
≈ 1.4 X 10–45
Denorm terbesar 00…00 11…11 (1.0 – ε) X 2–126
≈ 1.2 X 10–38
Norm pos terkecil 00…01 00…00 1.0 X 2–126
≈ 1.2 X 10–38
Satu 01…11 00…00 1.0
Normalized terbesar 11…10 11…11 (2.0 – ε) X 2127
≈ 3.4 X 1038
![Page 20: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/20.jpg)
Floating Point 4-20
Integer ke Floating PointKonversi integer ke format floating point single precision
1234510 = 0x3039 = 110000001110012 = 1.10000001110012 X 213
normalisasi bilangan dengan shift 13 posisi ke kanan binary pointKonstruksi bagian frac (23 bit)
ambil signifikan M = 1.10000001110012frac = 100000011100100000000002
frac diperoleh dengan membuang bit 1 di depan dan menambah 10 buah nol
Konstruksi bagian exp (8 bit)bias = 127; E = 13; e = E + bias = 140; diperoleh exp = 100011002
Reprensentasi floating point : 12345.0 = 0x4640E400Heksa 4 6 4 0 E 4 0 0 Biner 0100 0110 0100 0000 1110 0100 0000 0000
23 bit frac8 bit exp1 bit tanda
![Page 21: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/21.jpg)
Floating Point 4-21
Operasi Floating PointKonsep operasi floating point
1. Hitung hasil eksak2. Cocokan hasil dengan tingkat kepresisian yang diinginkan
Dapat terjadi overflow jika eksponen terlalu besarDapat terjadi pembulatan agar cocok dengan nilai frac
Metoda pembulatan (rounding)1.40 1.60 1.50 2.50 –1.50
Zero 1 1 1 2 –1Round down (-∞) 1 1 1 2 –2Round up (+∞) 2 2 2 3 –1Nearest Even (default) 1 2 2 2 –2
Catatan :zero = pembulatan ke arah nol; round down = pembulatan ke bawah;round up = pembulatan ke atas; nearest even = pembulatan terdekat
![Page 22: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/22.jpg)
Floating Point 4-22
Pembulatan Nearest Even
Mode pembulatan standar (default)Pembulatan ke nilai terdekatJika bilangan berada tepat ditengah-tengah antara dua nilai yang mungkin → bulatkan sehingga nilai digit terkecil menjadi genap
Contoh : pembulatan ke per seratus terdekat1.2349999 1.23 (kurang dari setengah)1.2350001 1.24 (lebih besar dari setengah)1.2350000 1.24 (nilai tengah, bulatkan ke atas)1.2450000 1.24 (nilai tengah, bulatkan ke bawah)
![Page 23: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/23.jpg)
Floating Point 4-23
Pembulatan Bilangan Biner
Bilangan pecahan binerBernilai “genap” jika least significant bit = 0
Contoh : Pembulatan ke 1/4 terdekat (2 bit di kanan binary point)
Nilai Biner Pembulatan Hasil Nilai akhir2 3/32 10.000112 < nilai tengah, bulat terdekat 10.002 22 3/16 10.001102 > nilai tengah, bulat terdekat 10.012 2 1/42 7/8 10.111002 nilai tengah, bulat ke genap 11.002 32 5/8 10.101002 nilai tengah, bulat ke genap 10.102 2 1/2
![Page 24: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/24.jpg)
Floating Point 4-24
Floating Point pada C
Bahasa C memiliki dua format floating point :float single precision (32 bit)double double precision (64 bit)
Casting antara format int, float, dan double mengubah nilai numerik dan representasi bit-nya :
Dari int ke floatBilangan tidak akan overflow, tetapi dapat mengalami pembulatan
Dari int atau float ke doubleKonversi secara eksak, double memiliki range dan presisi lebih besar
Dari double ke floatDapat mengalami overflow (+∞ atau −∞)Dapat juga terjadi pembulatan, karena presisi lebih rendah
Dari double atau float ke intMemotong bagian pecahan, mendekati nol, beda dengan rounding
![Page 25: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/25.jpg)
Floating Point 4-25
Ariane 5
Meledak 37 detik setelah peluncuranMembawa muatan, satelit seharga 500 juta dollar
Mengapa terjadi kegagalan ?Perhitungan kecepatan horisontal dilakukan dalam bilangan floating pointDikonversi ke integer 16-bitBekerja baik pada Ariane 4Pada Ariane 5 terjadi overflow
Ariane 5 menggunakan perangkat lunak yang sama dengan Ariane 4, padahal kecepatan geraknya lima kali lebih tinggi dari Ariane 4
![Page 26: Bag 04 - Floating Point](https://reader030.fdocuments.us/reader030/viewer/2022032512/55cf9ce4550346d033ab712f/html5/thumbnails/26.jpg)
Floating Point 4-26
Ringkasan
Floating point standar IEEE digunakan untuk merepresentasikan bilangan real dalam bentuk V = (–1)s x M x 2E
Floating point digunakan untuk melakukan komputasi bilangan sangat besar (|V | » 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)