Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013

Slides:



Advertisements
Presentasi serupa
Teori Graf.
Advertisements

Pemrograman Terstruktur
START.
Sistem Bilangan dan Konversi Bilangan
Peng.Komputer TI- AMinggu ke STRUKTUR DATA.
Subnetting Cara Cepat I (IP Kelas C)
Oleh : Ilmawan Mustaqim
PERTEMUAN MINGGU KE-4 REPRESENTASI DATA.
Oleh : Tim Hibah Pengajaran Mata Kuliah Teknologi Informasi Jurusan Matematika Pertemuan 4.
PERTEMUAN MINGGU KE-3 REPRESENTASI DATA.
ARITMETIKA KOMPUTER I. Pendahuluan
Arsitektur Komputer “Rangkaian Aritmatika”
Ema Maliachi,S.kom Bahasa Assembly Konversi Bilangan Pertemuan ke-2.
Sistem Bilangan dan Konversi Bilangan
FAKULTAS ILMU KOMPUTER UNIVERSITAS DIAN NUSWANTORO Pengantar Teknologi Informasi (Teori) Minggu ke-04 Oleh : Ibnu Utomo WM, M.Kom.
Sistem Bilangan dan Konversi Bilangan
SISTEM BILANGAN & SISTEM KODE
ARCHITECTURE COMPUTER
BARISAN DAN DERET ARITMETIKA
Induksi Matematika.
Arsitektur & Organisasi
Sistem Bilangan dan Konversi Bilangan
WISNU HENDRO MARTONO,M.Sc
ARITMATIKA DIGITAL Siswo Wardoyo, S.T., M.Eng.
Selamat Datang Dalam Kuliah Terbuka Ini
15 Januari Jim Michael Widi, S.Kom - FTI UBL.
SISTEM BILANGAN Terbagi atas 4 macam yaitu : Bilangan Desimal berbasis
SISTEM BILANGAN DAN KODE BILANGAN
Pendahuluan 1.
Jurusan Teknik Elektro Fakultas Teknik UNTIRTA
© 2009 Fakultas Teknologi Informasi Universitas Budi Luhur Jl. Ciledug Raya Petukangan Utara Jakarta Selatan Website:
Luas Daerah ( Integral ).
FUNGSI MATEMATIKA DISKRIT K- 6 Universitas Indonesia
Pemrograman Terstruktur
Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013
Sumber : Rinaldi Munir, ITB
Sistem-Sistem Bilangan
SISTEM BILANGAN, OPERASI ARITMATIKA DAN PENGKODEAN
MENJELASKAN SISTEM BILANGAN
Pengantar Sistem Komputer
REPRESENTASI FIX POINT DAN FLOATING POINT
Aritmatika Bilangan Biner
SISTEM BILANGAN, OPERASI ARITMATIKA DAN PENGKODEAN
FUNGSI STRUKTUR DISKRIT K-8 Program Studi Teknik Komputer
Bahan Kuliah IF2091 Struktur Diskrit
Statistika Deskriptif: Distribusi Proporsi
Bahan Kuliah IF2120 Matematika Diskrit
Pohon (bagian ke 6) Matematika Diskrit.
Oleh Sumiasih, dayu mas, hitem wijana, artawan, swidiyasa MAHA SARASWATI DENPASAR Sistem Bilangan dan Konversi Bilangan.
Pengantar Komputer Teknik Sipil dan Perencanaan Universitas Gunadarma
KOMUNIKASI DATA – ST014 SISTEM BILANGAN
OPERATOR Teknik Informatika Universitas Muhammadiyah Malang 2011 Pemrogramman Terstruktur.
Data dan Struktur Data.
Floating Point Arithmetic
Representasi Floating Point
Pertemuan 3.
Pengantar Teknologi Informasi
SISTEM BILANGAN.
Arsitektur Komputer Genap 2004/2005
OPERASI ARITMATIKA Arsitektur Komputer.
ORGANISASI dan ARSITEKTUR KOMPUTER
FLOATING – POINT NUMBER SISTEM
PERTEMUAN MINGGU KE-4 REPRESENTASI DATA.
PERTEMUAN MINGGU KE-3 REPRESENTASI DATA.
REPRESENTASI BILANGAN
PERTEMUAN MINGGU KE-3 REPRESENTASI DATA.
PERTEMUAN MINGGU KE-4 REPRESENTASI DATA OLEH SARI NY.
PERTEMUAN MINGGU KE-3 REPRESENTASI DATA.
SISTEM BILANGAN.
Biner Bertanda Temu 8.
Transcript presentasi:

Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013 IF5011 Sistem dan Arsitektur Komputer Bagian 4 Floating Point Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung 2013

Pembahasan Bilangan pecahan biner Representasi floating point standar IEEE 754 Pengkodean floating point Normalized Denormalized Nilai khusus Rounding Operasi floating point Floating point pada C

Bilangan Pecahan Biner b–j • • • . 1 2 4 2i–1 2i 1/2 1/4 1/8 2–j Representasi bilangan : b = Bit sebelah kiri binary point merepresentasikan bobot 2k Bit sebelah kanan binary point merepresentasikan bobot 2-k 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¾

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 kiri contoh : 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.1111112 Direpresentasikan dengan notasi 1.0 – 

Keterbatasan Pecahan Biner Memiliki panjang kode terbatas Tidak 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 Representasi 1/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

Bilangan Floating Point Merupakan aproksimasi dari bilangan real Merepresentasikan 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), dan bilangan sangat dekat dengan nol (|V | « 1) Pecahan biner tidak efisien dalam mengkodekan bilangan bernilai besar Contoh : 5 x 2100 tersusun atas pola bit 101 diikuti 100 buah nol

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)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 754 Ditentukan tahun 1985 Bentuk standar aritmetika floating point Sebelumnya, terdapat berbagai macam format Didukung oleh seluruh CPU

Pengkodean Floating Point Representasi floating point IEEE V = (–1)s x M x 2E Kode biner floating point s (sign) sepanjang satu bit mengkodekan bit tanda s exp (exponent) sepanjang k bit mengkodekan eksponen E frac (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

3 Kasus Kode Floating Point Berdasarkan pola bit exp, pengkodean floating point dibagi menjadi tiga kasus : Nilai normalized 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 Bila bit-bit exp semuanya satu (exp = 111…1)

Nilai Normalized Berlaku untuk kondisi exp  000…0 dan exp  111…1 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 pecahan f =  0.xxx…x2, dimana x adalah bit-bit pada frac M berkisar antara 1.0 (frac= 000…0) s/d 2.0 –  (frac = 111…1 ) s exp frac 1 bit k bit n bit

Nilai Denormalized Berlaku untuk kondisi exp = 000…0 Nilai kode eksponen E = 1 – bias bias = 2k-1 – 1, dimana k adalah banyaknya bit exp signifikan M = f pecahan f = 0.xxx…x2, dimana x adalah bit-bit pada frac Kasus denormalized 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 Bilangan yang sangat dekat dengan 0.0 Sifat gradual underflow, semakin kecil semakin presisi s exp frac 1 bit k bit n bit

Nilai Khusus Berlaku untuk kondisi exp = 111…1 Kasus : exp = 111…1, frac = 000…0 Merepresentasikan nilai(tak hingga/infinity) 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 = ) 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

3 Kasus Kode Floating Point Ringkasan pengkodean bilangan real floating point : Normalized Denormalized Nilai khusus Tak hingga (infinity) Not a Number  + -Normalized -Denorm +Denorm +Normalized NaN NaN 0 +0

Nilai antara -1.0 hingga +1.0 : Distribusi Nilai Misalkan : floating point 6 bit, format menyerupai IEEE sign s = 1 bit, eksponen exp = 3 bit, pecahan frac = 2 bit Perhatikan : distribusi semakin padat ketika mendekati nol Seluruh range nilai : Nilai antara -1.0 hingga +1.0 :

Contoh Kode Floating Point 1/4 Diberikan representasi floating point 8-bit (tiny) Satu bit tanda s terletak di most significant bit Empat bit berikutnya adalah eksponen exp Tiga bit terakhir adalah frac Bentuk menyerupai format IEEE Terdapat kasus normalized, denormalized Terdapat representasi untuk nol, tak hingga dan NaN Representasi nilai dihitung : V = (–1)s x M x 2E dimana M diturunkankan dari frac dan E diturunkan dari exp s exp frac 2 3 6 7

Contoh Kode Floating Point 2/4 exp e E 2E kasus 0000 0 -6 1/64 denormalized 0001 1 -6 1/64 normalized 0010 2 -5 1/32 0011 3 -4 1/16 0100 4 -3 1/8 0101 5 -2 1/4 0110 6 -1 1/2 0111 7 0 1 1000 8 +1 2 1001 9 +2 4 1010 10 +3 8 1011 11 +4 16 1100 12 +5 32 1101 13 +6 64 1110 14 +7 128 normalized 1111 15 - - inf, NaN Perhitungan nilai E denormalized : E = 1 - bias normalized : E = e - bias bias = 2k-1 – 1 = 24-1 – 1 = 7

Contoh Kode Floating Point 3/4 exp frac f M kasus 0000 000 0 0 0000 001 1/8 1/8 0000 010 2/8 2/8 … denormalized 0000 110 6/8 6/8 0000 111 7/8 7/8 0001 000 0 8/8 0001 001 1/8 9/8 … 0110 111 7/8 15/8 0111 000 0 8/8 0111 001 1/8 9/8 … normalized 1110 110 6/8 14/8 1110 111 7/8 15/8 1111 000 - - tak hingga Perhitungan nilai M denormalized : M = f normalized : M = 1 + f f = 0.xxx2, x adalah bit-bit frac

Contoh Kode Floating Point 4/4 s exp frac Perhitungan nilai V = (–1)s x M x 2E 0 0000 000 0 0 0000 001 1/8*1/64 = 1/512 0 0000 010 2/8*1/64 = 2/512 … 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 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 0 0111 001 9/8*1 = 9/8 0 1110 110 14/8*128 = 224 0 1110 111 15/8*128 = 240 0 1111 000 + tak hingga bilangan terdekat ke nol bilangan denormalized terbesar Bilangan normalized terkecil terdekat ke 1 (dr bawah) terdekat ke 1 (dari atas) bilangan normalized terbesar

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 Satu 01…11 00…00 1.0 Normalized terbesar 11…10 11…11 (2.0 – ) X 2127  3.4 X 1038

Integer ke Floating Point Konversi integer ke format floating point single precision 1234510 = 0x3039 = 110000001110012 = 1.10000001110012 X 213 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 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 1 bit tanda 8 bit exp 23 bit frac

Operasi Floating Point Konsep operasi floating point Hitung hasil eksak Cocokan hasil dengan tingkat kepresisian yang diinginkan Dapat terjadi overflow jika eksponen terlalu besar Dapat 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 –1 Round down (-) 1 1 1 2 –2 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; round up = pembulatan ke atas; nearest even = pembulatan terdekat

Pembulatan Nearest Even Mode pembulatan standar (default) Pembulatan ke nilai terdekat Jika bilangan berada tepat ditengah-tengah antara dua 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) 1.2450000 1.24 (nilai tengah, bulatkan ke bawah)

Pembulatan Bilangan Biner Bilangan pecahan biner 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 2 5/8 10.101002 nilai tengah, bulat ke genap 10.102 2 1/2

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 float Bilangan tidak akan overflow, tetapi dapat mengalami pembulatan 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 Dari double atau float ke int Memotong bagian pecahan, mendekati nol, beda dengan rounding

Ariane 5 Mengapa terjadi kegagalan ? Meledak 37 detik setelah peluncuran Membawa muatan, satelit seharga 500 juta dollar Mengapa terjadi kegagalan ? Perhitungan kecepatan horisontal dilakukan dalam bilangan floating point Dikonversi ke integer 16-bit Bekerja baik pada Ariane 4 Pada Ariane 5 terjadi overflow Ariane 5 menggunakan perangkat lunak yang sama dengan Ariane 4, padahal kecepatan geraknya lima kali lebih tinggi dari Ariane 4

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)