Anda di halaman 1dari 17

Rangkuman 2 Nop PSJ

- Floating Point

- Backgroundnya berasal dari fractional binary numbers


- Lalu didefinisikan menggunakan IEEE floating point standard (IEEE 754)
- Akan ada rounding, addtion, dan multiplication
- Floating point di C

- Angka koma dalam binary


- Di definisikan di atas 0 tapi di bawah 1
- 2 ^ -1, 2^ -2, 2 ^-3 dst
- Sehingga 1011.101 (2) = 11.625 (10)
- Fractional Binary Numbers
- Di belakang koma berarti pangkatnya di bawah 0
- Seperti yang telah dibahas di integer

- Contohnya misal 5 ¾ (10) = 101.11 (2)


- Yang dibelakang koma sama dengan shifting right untuk unsigned
- Jika ada 0.111111 mendekati 1, tapi bukan 1
- Sehingga notasinya 1.0 – E
- Sehingga floating point itu tidak murni, tapi ada errornya
- Ini adalah limitasinya
- Jadi untuk 1/3 itu repetitif begitupun dengan 1/5, 1/10
- Jadi setting binary nya itu di satu titik, sehingga perlu standar lagi

- Sehingga dibutuhkan standar untuk menyatakan floating point agar bisa mencapai nilai terkecil
maupun terbesar, namanya IEEE Standard 754
- Hal ini disupport oleh banyak processor tapi tidak semua
- Bebrapa aturannya diskip
- Sehingga ada standar untuk rounding, overflow, dan underflow
- Jika bekerja di scrientific simulation, bisa bekerja dengan FP32, atau FP64, beda range nya, ada
juga yang 16
- Ini floating point representation yang harus dipahami
- S = sign (negative atau positif)
- M = Significand (nilai pecahannya)
- E = Expornent (dalam base nya 2)
- Encoding nya ada di bawah, di bagi 3
- Ada s, exp, dan frac
- s = 1 bit
- exp = 8 bit
- frac = 23 bit
- Total = 32 bit / 4 byte

- Mendefinisikan 2 yang sering digunakan, 32 bit dan 64 bit


- Yang atas FP32 atau single precision (7 digit desimal, 10 ^ 38)
- Yang bawah FP64 atau double precision (16 digit desimal, 10 ^ 308)
- Ada juga half precision (16 bit) dan quad precision (256 bit) untuk implementasi alat

- Ada 3 jenis floating point


- Yang pertama yakni tidak dinormalisasi (0 semua)
- Yang kedua dinormalisasi
- Yang ketiga spesial (1 semua)

- Diexponent kemudian dikurangi bias


- V = (-1)^s M 2^E
- E = exp – Bias
- Bias = 2 ^ (k -1) – 1, 127 untuk single, 1023 untuk double
- E = -126 smpai 127 (single precision)
- E = -1022 sampai 1023 (double precision)
- Yang menarik yakni ada leading 1 yang tidak terlihat
- Sehingga nanti fractionnya 0 semua, M nya 1
- Dan fractionnnya 1 semua, M nya 2.0 – e (mendekati 2)

- Contohnya menggunakan 15213 (10)


- Pertama, konversi ke binary
- Kedua, konversi ke leading
- Ketiga, M = 1.fractionnya
- Keempat, fractionnya di belakang koma dipadding dengan 0 hingga totalnya 23 (32 bit)
- E = 13
- Harus ditambah bias, 127
- Sehingga exp = 140
- Keenam, 140 diubah menjadi binary
- Sehingga penulisannya menjadi s – exp – frac seperti yang telah ditemukan

- Untuk yang dinormalized


- Exponent nya 0 semua
- Sehingga E = 1 – bias
- Yang membedakan adalah leadinya bukan 1 melainkan 0
- Ada dua case
- Yang pertama exp = 0 dan frac = 0
- Sehingga merepresentasikan angka 0
- Tapi yang bikin bingung s nya nol atau 1 (+0 dan -0)
- Case kedua yakni exp = 0 dan frac != 0
- Dekat dengan 0
- Tapi tidak sama dengan 0

- Yang terakhir adalah special


- Adalah ketika exp = 1 semua
- Ada dua case
- Yang pertama saat overflow (infinity) ketika exp = 1 semua, dan frac = 0 semua
- Misalnya saat positive dan negative
- Bisa positif dan negative
- S nya tergantung
- Case kedua saat exp = 1 semua, dan frac != 0
- Hal ini tidak bisa didefinisikan, Not a Number (NaN)
- Contoh decoding float
- Nilainya misal dari hexfloatnya diubah ke binary
- E = exp – bias
- E = 129 – 127 = 2 karena exp = 129
- S = 1 karena depannya 1
- M = 1.010 0000 0000 0000 0000 0000
- Sehingga Value = (-1)^s M 2^E = -5

- Contoh decoding yang lain


- Nilai nya yang mendekati 0
- Visualisasi dari floating point

- Dengan mengubah format dari penulisannya, menjadi 8 bit, akan menjadi seperti berikut
- Bit to Bit perubahannya untuk floating point 8 bit
- Ada smooth transition antara denom dengan norm

- Distribusi value nya dengan 6 bit, atau versi mini


- Distribusinya mendekati 0 itu sangat padat
- Nanti biasanya scientific akan diresize
- Denom mendekati 0
- Nanti banyak data yang diresize dari 0 ke -1
- Nilainya lebih dekat

- Untuk representasinya 0 sama dengan integer


- Lalu beberapa yang jadi masalah adanya + 0 dan 0
- Tidak bisa mengubah NaN ke integer
- Yang lain ok
- Selanjutnya ke rounding, addition, dan multiplication
- Kalau ditambahkan ada kemungkinan overflow, jadi harus melihat yang lain
- Melakukan komputasi berdasarkan hasilnya
- Kemudian dipaskan dengan tempat penampungnnnya
-

- Untuk rounding ada yang cukup menarik


- Ad 4 macam
- Ada towards zero, yang lebih dekat ke 0
- Round down, selalu diturunkan
- Round up, selalu dinaikkan
- Nearest Even, tergatung nilainya ditengahi 5, jika di tengah diturunkan
- Contoh rounding dengan round to even

- Rounding binary fraction number bukan floating point


- Ini halfway, 3 digit

- Implementasi dari multiplication floating point


- Dikaliakn seperti biasa
- Exact result: (-1)^s M 2^E
- Sign s: s1 ^ s2
- Siginificand M: M1 x M2
- Exponent E: E1 + E2
- Yang berbeda yakni ketika M<1
- Harus menyesuaikan

- Matematika propertinya
- Untuk perkalian

- Floating point di c, terdapat float dan double


- Ketika ada casting ada yang dihilangkan
- Ada studi kasus di mana d atau f nya adalah NaN
- X nya dicasting ke float = false
- X nya dicasting ke double = true karena rangenya besar
- F nya dicasting ke double = true
- D nya dicasitng ke float = false terjadi truncating
- F nya di negasi = true
- Harus dicek untuk tipe datanya

- Summary
That’s All

Anda mungkin juga menyukai