Bag 04 - Floating Point

26
Departemen Teknik Elektro Institut Teknologi Bandung 2005 EC3003 - Sistem Komputer Bagian 4 Floating Point

description

floating point digital

Transcript of Bag 04 - Floating Point

Page 1: Bag 04 - Floating Point

Departemen Teknik Elektro Institut Teknologi Bandung2005

EC3003 - Sistem Komputer

Bagian 4Floating Point

Page 2: Bag 04 - Floating Point

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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)