• Tidak ada hasil yang ditemukan

STEI Institut Teknologi Bandung

N/A
N/A
Protected

Academic year: 2021

Membagikan "STEI Institut Teknologi Bandung"

Copied!
26
0
0

Teks penuh

(1)

Floating Point

Floating Point

(2)

Pembahasan

Bilangan pecahan biner

g

p

Representasi floating point standar IEEE 754

Pengkodean floating point

ƒ

Normalized

ƒ

Denormalized

ƒ

Nilai khusus

Rounding

Operasi floating point

Floating point pada C

(3)

Bilangan Pecahan Biner

ƒ Representasi bilangan : 2i–1 2i b = b l h k b 2 4 • • • binary point bk ⋅2k k=− j i

ƒ Bit sebelah kiri binary point merepresentasikan bobot 2k

ƒ Bit sebelah kanan binary point merepresentasikan bi bi–1 • • • b2 b1 b0

.

b–1b–2b–3 • • • b–j 1 1/2 point merepresentasikan bobot 2-k • • • / 1/4 1/8 2–j 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 + ½ + ¼

(4)

Bilangan Pecahan Biner

Menggeser

binary point

ke kiri → membagi dengan 2

ƒ sama dengan shift kanan ƒ contoh : 101.112 = 5 ¾

10.1112 = 2 + 0 + ½ + ¼ + 1/8 = 2 7/8

Menggeser

binary point

ke kanan → mengalikan dengan 2

ƒ sama dengan shift kirig

ƒ contoh : 1011.12 = 8 + 0 + 2 + 1 + ½ = 11½

Bilangan mendekati 1 memiliki bentuk 0.111111…

a ga

d a

b

u 0

22

ƒ Contoh : 63/64 = 1/2+1/4+1/8+1/16+1/32+1/64 = 0.1111112

(5)

Keterbatasan Pecahan Biner

Memiliki

panjang kode terbatas

p

j

g

ƒ

Tidak dapat merepresentasikan bilangan 1/3 secara eksak

ƒ

Dapat mereprentasikan secara eksak bila berbentuk

x

x

2

y

Bil

l i h

l

i

t i bit b k li k li

ƒ

Bilangan lain harus mengulangi representasi bit berkali-kali

Nilai

Representasi

1/3

0.0101010101[01]…

2

1/5

0.001100110011[0011]…

2

1/10

0.0001100110011[0011]

2

1/10

0.0001100110011[0011]…

2

Akurasi dapat dinaikkan dengan menambah bit, tetapi tetap saja tidak dapat merepresentasikan secara eksak

(6)

Bilangan Floating Point

Merupakan aproksimasi dari bilangan real

p

p

g

ƒ

Merepresentasikan bilangan real dalam bentuk

V

=

x

x

2

y

ƒ

Tidak selalu memberikan hasil eksak, dapat terjadi pembulatan

Digunakan dalam melakukan komputasi :

ƒ

bilangan sangat besar

(|

V

| » 0), dan

ƒ

bilangan sangat dekat dengan nol

(|

V

| « 1)

Pecahan biner tidak efisien dalam mengkodekan bilangan bernilai besar

Pecahan biner tidak efisien dalam mengkodekan bilangan bernilai besar

(7)

Floating Point Standar IEEE

Ide

ƒ Bentuk V = x x 2y ingin direpresentasikan dengan hanya memberikan

nilai x dan y-nya saja

Representasi floating point standar IEEE 754

V

( 1)

M

2

E

V =

(–1)

s

x

M

x 2

E

ƒ 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 754

Standar IEEE 754

ƒ Ditentukan tahun 1985

ƒ Bentuk standar aritmetika floating point

ƒ Sebelumnya, terdapat berbagai macam formatSebelumnya, terdapat berbagai macam format Didukung oleh seluruh CPU

(8)

Pengkodean Floating Point

Representasi floating point IEEE

ƒ

V =

(–1)

s

x

M

x 2

E

Kode biner floating point

s exp frac

ƒ s (sign) sepanjang satu bit mengkodekan bit tanda s

s exp frac

1 bit k bit n bit

( g ) p j g g

ƒ exp (exponent) sepanjang k bit mengkodekan eksponen E ƒ frac (fraction) sepanjang n bit mengkodekan signifikan M

Ukuran (tipe data fl t pada C)

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

(9)

3 Kasus Kode Floating Point

Berdasarkan pola bit exp, pengkodean floating point

dibagi menjadi tiga kasus :

ƒ

Nilai

normalized

K

li

ƒ

Kasus paling umum

ƒ

Bila bit-bit exp tidak semua nol (exp

≠ 000…0) atau tidak

semua satu (exp

≠ 111…1)

ƒ

Nilai

denormalized

ƒ

Bila bit-bit exp semuanya nol (exp = 000…0)

ƒ

Nilai khusus

ƒ

Nilai khusus

(10)

Nilai

Normalized

Berlaku untuk kondisi

exp

≠ 000…0

dan

exp

≠ 111…1

k

d

k

d l

b

k b

Eksponen E diinterpretasikan dalam bentuk bias

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)

Signifikan M adalah bilangan pecahan

M = 1 + f

ƒ pecahanpecahan ff = 0.xxx x0.xxx…x22, dimana x adalah bit-bit pada frac, dimana x adalah bit bit pada frac

ƒ M berkisar antara 1.0 (frac= 000…0) s/d 2.0 – ε (frac = 111…1 )

(11)

Nilai

Denormalized

Berlaku untuk kondisi

exp = 000…0

Nilai kode

Nilai kode

ƒ eksponen E = 1 – bias

ƒ bias = 2k-1 – 1, dimana k adalah banyaknya bit exp

ƒ signifikansignifikan MM f= f

ƒ pecahan f = 0.xxx…x2, dimana x adalah bit-bit pada frac

Kasus

denormalized

ƒ e p = 000 0 frac = 000 0 ƒ exp = 000…0, frac = 000…0

ƒ Merepresentasikan nilai 0

ƒ Terdapat perbedaan antara nilai +0 and –0, berdasarkan nilai bit s ƒ exp = 000…0, frac ≠ 000…0

Bil t d k t d 0 0

ƒ Bilangan yang sangat dekat dengan 0.0

ƒ Sifat gradual underflow, semakin kecil semakin presisi

(12)

Nilai Khusus

Berlaku untuk kondisi

exp = 111…1

Kasus :

Kasus :

exp

= 111…1, frac = 000…0

ƒ Merepresentasikan nilai

(tak hingga/infinity)

f b l 0 d f b l

ƒ positif +

bila s=0 dan negatif –

bila s=1 ƒ Hasil operasi yang mengalami overflow

ƒ Hasil kali dua bilangan sangat besar

ƒ Pembagian dengan nol (1 0/0 0 = 1 0/ 0 0 = +

1 0/ 0 0 =

∞)

ƒ 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 ƒ Merepresentasikan situasi dimana tidak ada nilai numeriknya

ƒ Contoh : sqrt(–1), ∞ − ∞

(13)

3 Kasus Kode Floating Point

Ringkasan pengkodean bilangan real floating point :

g

p g

g

g p

1.

Normalized

2.

Denormalized

3

Nilai khusus

3.

Nilai khusus

ƒ Tak hingga (infinity) ƒ Not a Number

+∞

-Normalized -Denorm +Denorm +Normalized

NaN

NaN −0

(14)

Distribusi Nilai

Misalkan : floating point 6 bit, format menyerupai IEEE

ƒ sign s = 1 bit, eksponen exp = 3 bit, pecahan frac = 2 bitsign s 1 bit, eksponen exp 3 bit, pecahan frac 2 bit

Seluruh range nilai :

-15 -10 -5 0 5 10 15

Nilai antara -1.0 hingga +1.0 :

-15 -10 -5 0 5 10 15

D li d N li d

f

-1 -0,5 0 0,5 1

Perhatikan :

distribusi semakin padat ketika mendekati nol

Denormalized Normalized

Infinity

(15)

Contoh Kode Floating Point

Diberikan representasi floating point 8-bit (tiny)

ƒ Satu bit tanda s terletak di most significant bit

1/4

ƒ Satu bit tanda s terletak di most significant bit ƒ Empat bit berikutnya adalah eksponen exp

ƒ Tiga bit terakhir adalah frac

s exp frac 0 2 3 6 7

Bentuk menyerupai format IEEE

ƒ Terdapat kasus normalized, denormalized

T d t t i t k l t k hi d N N

ƒ Terdapat representasi untuk nol, tak hingga dan NaN ƒ Representasi nilai dihitung : V = (–1)s x M x 2E

(16)

Contoh Kode Floating Point

exp

e

E

2

E

kasus

2/4

0000 0 -6 1/64 denormalized 0001 1 -6 1/64 normalized 0010 2 -5 1/32 0011 3 -4 1/16 0011 3 -4 1/16 0100 4 -3 1/8 0101 5 -2 1/4 0110 6 -1 1/2

Perhitungan nilai E

denormalized : E = 1 - bias 0111 7 0 1 1000 8 +1 2 1001 9 +2 4 1010 10 +3 8 normalized : E = e - bias bias = 2k-1 – 1 = 24-1 – 1 = 7 1010 10 +3 8 1011 11 +4 16 1100 12 +5 32 1101 13 +6 64 bias 2 1 2 1 7

(17)

Contoh Kode Floating Point

exp frac

f

M

kasus

3/4

0000 000 0 0 0000 001 1/8 1/8 0000 010 2/8 2/8 denormalized denormalized 0000 110 6/8 6/8 0000 111 7/8 7/8 0001 000 0 8/8

Perhitungan nilai M

denormalized : M = f 0001 001 1/8 9/8 0110 111 7/8 15/8 0111 000 0 8/8 denormalized : M = f normalized : M = 1 + f

f = 0.xxx2, x adalah bit-bit frac

0111 000 0 8/8 0111 001 1/8 9/8 normalized 1110 110 6/8 14/8 1110 111 7/8 15/8 1110 111 7/8 15/8

(18)

Contoh Kode Floating Point

s exp frac

Perhitungan nilai V = (–1)s x M x 2E

4/4

0 0000 000 0

0 0000 001 1/8*1/64 = 1/512

0 0000 010 2/8*1/64 = 2/512

bilangan terdekat ke nol

0 0000 110 6/8*1/64 = 6/512

0 0000 111 7/8*1/64 = 7/512

0 0001 000 8/8*1/64 = 8/512

bilangan denormalized terbesar Bilangan normalized terkecil

0 0001 001 9/8*1/64 = 9/512 0 0110 111 15/8*1/2 = 15/16 0 0111 000 8/8*1 = 1 g terdekat ke 1 (dr bawah) 0 0111 000 8/8 1 1 0 0111 001 9/8*1 = 9/8 0 1110 110 14/8*128 = 224

terdekat ke 1 (dari atas)

bilangan normalized terbesar bilangan normalized terbesar

(19)

Nilai Single Precision (float)

Single precision : s=1 bit, exp=8 bit , frac=23 bit → total 32 bit

D k i i

f

Nil i N

ik

Deskripsi

exp

frac

Nilai Numerik

Zero 00…00 00…00 0.0

k il 23 126

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

≈ 1.2 X 10

Satu 01…11 00…00 1.0

Normalized terbesar 11 10 11 11 (2 0 ) X 2127

(20)

Integer ke Floating Point

Konversi integer ke format floating point single precision

12345

10

= 0x3039 = 11000000111001

2

= 1.1000000111001

2

X 2

13 ƒ normalisasi bilangan dengan shift 13 posisi ke kanan binary point

Konstruksi bagian frac (23 bit)

ƒ ambil signifikan M = 1.10000001110012 ƒ frac = 100000011100100000000002

ƒ frac diperoleh dengan membuang bit 1 di depan dan menambah 10 buah nol

K

t k i b i

(8 bit)

Konstruksi bagian exp (8 bit)

ƒ bias = 127; E = 13; e = E + bias = 140; diperoleh exp = 100011002

Reprensentasi floating point : 12345.0 = 0x4640E400

Heksa 4 6 4 0 E 4 0 0 Biner 0100 0110 0100 0000 1110 0100 0000 0000

(21)

Operasi Floating Point

Konsep operasi floating point

1.

Hitung hasil eksak

2.

Cocokan hasil dengan tingkat kepresisian yang diinginkan

ƒ

Dapat terjadi overflow jika eksponen terlalu besar

ƒ

Dapat terjadi pembulatan agar cocok dengan nilai frac

Dapat terjadi pembulatan agar cocok dengan nilai frac

Metoda pembulatan (rounding)

1 40 1 60 1 50 2 50 –1 50 1.40 1.60 1.50 2.50 –1.50 ƒ Zero 1 1 1 2 –1 ƒ Round down (-∞) 1 1 1 2 –2 ƒ Round up (+∞) 2 2 2 3 –1 ƒ Round up (+∞) 2 2 2 3 –1

ƒ Nearest Even (default) 1 2 2 2 –2

Catatan :

zero = pembulatan ke arah nol; round down = pembulatan ke bawah; zero = pembulatan ke arah nol; round down = pembulatan ke bawah;

(22)

Pembulatan Nearest Even

Mode pembulatan standar (

p

(

default

)

)

Pembulatan ke nilai terdekat

Jika bilangan berada tepat ditengah-tengah antara dua

il i

ki

b l tk

hi

il i di it

nilai yang mungkin →

bulatkan sehingga nilai digit

terkecil menjadi genap

Contoh : pembulatan ke per seratus terdekat

1.2349999

1.23

(kurang dari setengah)

1.2350001

1.24

(lebih besar dari setengah)

1.2350000

1.24

(nilai tengah, bulatkan ke atas)

(23)

Pembulatan Bilangan Biner

Bilangan pecahan biner

Be nil i “gen p” jik le t ignifi nt bit 0 ƒ Bernilai “genap” jika least significant bit = 0

Contoh : Pembulatan ke 1/4 terdekat (2 bit di kanan

binary point

)

Nilai Biner Pembulatan Hasil Nilai akhir 2 3/32 10.000112 < nilai tengah, bulat terdekat 10.002 2

2 3/16 10.001102 > nilai tengah, bulat terdekat 10.012 2 1/4

2 7/8 10.111002 nilai tengah, bulat ke genap 11.002 3

(24)

Floating Point pada C

Bahasa C memiliki dua format floating point :

float

single precision (32 bit)

float

single precision (32 bit)

double

double precision (64 bit)

Casting

antara format int, float, dan double mengubah nilai

numerik dan representasi bit nya :

numerik dan representasi bit-nya :

ƒ

Dari int ke float

ƒ Bilangan tidak akan overflow, tetapi dapat mengalami pembulatan

D i

t

k

ƒ

Dari int atau float ke double

ƒ Konversi secara eksak, double memiliki range dan presisi lebih besar

ƒ

Dari double ke float

ƒ Dapat mengalami overflow (+

atau

−∞)

ƒ Dapat juga terjadi pembulatan, karena presisi lebih rendah

(25)

Ariane 5

ƒ

Meledak 37 detik setelah

peluncuran

peluncuran

ƒ

Membawa muatan, satelit

seharga 500 juta dollar

Mengapa terjadi kegagalan ?

Mengapa terjadi kegagalan ?

ƒ

Perhitungan kecepatan

horisontal dilakukan dalam

bilangan floating point

bilangan floating point

ƒ

Dikonversi ke integer 16-bit

ƒ

Bekerja baik pada Ariane 4

ƒ

Pada Ariane 5 terjadi overflow

Pada Ariane 5 terjadi overflow

ƒ Ariane 5 menggunakan

perangkat lunak yang sama dengan Ariane 4, padahal kecepatan geraknya lima kali kecepatan geraknya lima kali

(26)

Ringkasan

Floating point standar IEEE digunakan untuk merepresentasikan

bil

l d l

b t k

V

( 1)

M

2

E

bilangan real dalam bentuk

V =

(–1)

s

x

M

x 2

E

Floating point digunakan untuk melakukan komputasi bilangan

sangat besar (|

V

| » 0) dan bilangan sangat dekat dengan nol

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)

Referensi

Dokumen terkait

sirkulasi adalah adalah kegiatan melayani pemakai jasa perpustakaan dalam pemesanan, peminjaman, dan pengembalian bahan pustaka beserta penyelesaian administrasinya

environmental performance memiliki pengaruh positif dan signifikan terhadap environmental disclosure , hal ini berarti semakin besar peran dari perusahaan dalam kegiatan

Sedangkan untuk penanganan masalah malware, perlu dilakukan kajian mengenai penggunaan IPS yang didukung/dikombinasikan dengan kebijakan penggunaan antivirus atau internet

Tujuan dari presentasi kasus ini adalah untuk menyajikan kasus pasien penyakit jantung koroner pasca BPAK yang telah selesai menjalani rehabilitasi fase II serta

KETAHANAN PANGAN MASYARAKAT BERBASIS KEPERCAYAAN LOKAL (Studi Kasus pada Komunitas Penganut Ajaran Sunda Wiwitan di Kp. Kontrak NAMA PENELITI

Sehubungan pengenalan kedua-dua dasar tersebut, kerajaan telah mewartakan Surat Pekeliling Perbendaharaan Bilangan 10 Tahun 1993 (SPP10/93) sebagai garis pandu untuk

[r]

Dari kisah testimoni di atas sudah kita ketahui bahwa obat herbal jelly gamat gold-g terbukti ampuh mengatasi tulang keropos dengan cepat dan alami karena dalam obat herbal ini