Rabu, 12 Juni 2013
Eksponen
Bit ke 23 sampai ke 30 berisi eksponen. Eksponen adalah sebuah integer, tapi bisa negatif, nol atau positif. Kamu mungkin menduga bahwa kita akan menggunakan 8bit integer two komplemen, namun kenyataannya kita menggunakan cara lain.
Eksponen tersusun menggunakan skema integer biased. Integer biased ini secara rekayasa merupakan pembiasan dari integer biasa yang seolah-olah ditambah dengan angka +127 jadi jika angka 0 melalui perhitungan biasa sedang direpresentasikan oleh 8bit maka sebenarnya angka tersebut sedang merepresentasikan angka 127. Angka 128 direpresentasikan dengan eksponen 1; angka 126 direpresentasikan dengan eksponen -1.
kita tentunya sudah membaca tadi bahwa mantissa selalu seolah-olah sudah memiliki "1," di depannya. lalu bagaimana jika kita sedang merepresentasikan pecahan "0,0" ?
Bagaimana Mantissa Berfungsi
Secara angka nol di depan sebuah koma bukanlah angka penting, maka kita selalu mendapati sebuah angka yang diawali dengan 1,
misal kita ingin merepresentasikan sebuah pecahan biner floating point 00011,00101101
angka 0 di depan koma hilangkan menjadi 11,00101101
kemudian majukan koma nya sehingga tepat diantara angka pertama dan kedua sehingga menjadi 1,100101101 x 2^1
karena setiap mantissa selalu direkayasa memiliki angka 1, di depannya sehingga angka tersebut tidak akan masuk ke mantissa, jadi yang ada di mantissa hanyalah angka yang ada di belakang angka 1,
yaitu 1,100101101 menjadi 100101101, ini lah yang akan mengisi mantissa sementara eksponen akan diisi dengan angka 2^1
jadi isi mantissanya adalah 10010110100000000000000
Quest 13: Apakah mantissa selalu 0 atau positif?
Jawab: ya tanda negatif bukanlah bagian dari mantissa
misal kita ingin merepresentasikan sebuah pecahan biner floating point 00011,00101101
angka 0 di depan koma hilangkan menjadi 11,00101101
kemudian majukan koma nya sehingga tepat diantara angka pertama dan kedua sehingga menjadi 1,100101101 x 2^1
karena setiap mantissa selalu direkayasa memiliki angka 1, di depannya sehingga angka tersebut tidak akan masuk ke mantissa, jadi yang ada di mantissa hanyalah angka yang ada di belakang angka 1,
yaitu 1,100101101 menjadi 100101101, ini lah yang akan mengisi mantissa sementara eksponen akan diisi dengan angka 2^1
jadi isi mantissanya adalah 10010110100000000000000
Quest 13: Apakah mantissa selalu 0 atau positif?
Jawab: ya tanda negatif bukanlah bagian dari mantissa
Lebih jauh pada Mantissa
Mantissa merepresentasikan angka dalam basis dua sepanjang 24bit. notasi posisinya seperti berikut ini:
1.xxxxxxxxxxxxxxxxxxxxxxx
di dalam tabel sebelumnya kita sudah melihat bahwa mantissa hanya terdiri dari 23bit yang artinya 1bit tambahan hanyalah rekayasa. Misal untuk angka 1.11110000101101101010001 maka mantissa hanya akan berisi dengan angka 11110000101101101010001.
1.xxxxxxxxxxxxxxxxxxxxxxx
di dalam tabel sebelumnya kita sudah melihat bahwa mantissa hanya terdiri dari 23bit yang artinya 1bit tambahan hanyalah rekayasa. Misal untuk angka 1.11110000101101101010001 maka mantissa hanya akan berisi dengan angka 11110000101101101010001.
IEEE 754 Floating Point
Sebuah single presisi floating point merujuk pada IEEE 754 adalah sejumlah 32bit panjang. Bit-bit ini dibagi-bagi menjadi sejumlah tetap sebagai berikut:
Bit 0 sampai 22 digunakan untuk mantissa; bit 23 sampai 30 digunakan untuk eksponen; dan bit 31 adalah sign bit. Kolom mantissa dan kolom eksponen bekerja seperti bagian yang sama pada notasi ilmiah. Sign bit menjadi tanda untuk keseluruhan notasi apakah angka tersebut 0 yang artinya positif ataukah 1 yang artinya negatif.
Quest 11: kamu telah melihat instruksi bltz yang artinya branch jika sebuah integer 32bit adalah di bawah nol atau angka tersebut negatif. Hal ini bekerja dengan cara dia mengecek bit ke terakhir apakah dia 1 atau 0.
apakah cara yang sama juga berlaku untuk single presisi?
Jawab: Ya
Bit 0 sampai 22 digunakan untuk mantissa; bit 23 sampai 30 digunakan untuk eksponen; dan bit 31 adalah sign bit. Kolom mantissa dan kolom eksponen bekerja seperti bagian yang sama pada notasi ilmiah. Sign bit menjadi tanda untuk keseluruhan notasi apakah angka tersebut 0 yang artinya positif ataukah 1 yang artinya negatif.
Quest 11: kamu telah melihat instruksi bltz yang artinya branch jika sebuah integer 32bit adalah di bawah nol atau angka tersebut negatif. Hal ini bekerja dengan cara dia mengecek bit ke terakhir apakah dia 1 atau 0.
apakah cara yang sama juga berlaku untuk single presisi?
Jawab: Ya
Senin, 10 Juni 2013
Digit Angka yang Tetap
Tiap-tiap notasi diwakili oleh 8 digit. dua digit digunakan untuk "float" koma desimal. Sisanya enam digit digunakan untuk mewakili angka.
Angka di dalam digit mantissa disebut presisi dari angka floating point. Saat kita mulai membicarakan floating point, presisinya adalah sejumlah bit yang ada di mantissa. Dengan sebuah 32bit single presisi floating point mantissa adalah 24bit. jadi single presisi floating point mempunyai 24bit presisi.
Perhatian: kadang-kadang dalam bahasa yang salah orang-orang menyebutkan bahwa nilai single presisi mempunyai 32bit presisi, tapi ini tidak benar.
Perhatian yang lain: mantissa menggunakan 23bit untuk merepresentasikan presisi 24bit. Trik ini akan dijelaskan selanjutnya.
Quest 10: berapa banyak mantissa yang bisa direpresentasikan oleh single presisi?
Jawab: sebuah mantissa mempunyai 23bit jadi ada sebanyak 2^23 pola yang tersedia.
Angka di dalam digit mantissa disebut presisi dari angka floating point. Saat kita mulai membicarakan floating point, presisinya adalah sejumlah bit yang ada di mantissa. Dengan sebuah 32bit single presisi floating point mantissa adalah 24bit. jadi single presisi floating point mempunyai 24bit presisi.
Perhatian: kadang-kadang dalam bahasa yang salah orang-orang menyebutkan bahwa nilai single presisi mempunyai 32bit presisi, tapi ini tidak benar.
Perhatian yang lain: mantissa menggunakan 23bit untuk merepresentasikan presisi 24bit. Trik ini akan dijelaskan selanjutnya.
Quest 10: berapa banyak mantissa yang bisa direpresentasikan oleh single presisi?
Jawab: sebuah mantissa mempunyai 23bit jadi ada sebanyak 2^23 pola yang tersedia.
e
Membuat pangkat dengan cara menulis angka yang kecil di atas angka lainnya tidak cocok dengan program. Sebuah notasi sedikit diubah agar bisa digunakan di komputer baik sebagai input maupun output text.
1,38502 × 10^+03 = 1,38502e+03
1,38502 × 10^-03 = 1,38502e-03
-1,38502 × 10^+03 = -1,38502e+03
-1,38502 × 10^-03 = -1,38502e-03
Perhatian: untuk SPIM hanya huruf "e" kecil yang berlaku untuk notasi ini. (beberapa software sistem seperti JAVA memperbolehkan menggunakan huruf besar atau hirif kecil).
Quest 9: Berapa banyak digit kah yang diperlukan untuk notasi di atas? Berapa digit untuk mantissa dan berapa digit untuk eksponen?
Jawab: 8. 6 digit mantisa, 2 digit eksponen
1,38502 × 10^+03 = 1,38502e+03
1,38502 × 10^-03 = 1,38502e-03
-1,38502 × 10^+03 = -1,38502e+03
-1,38502 × 10^-03 = -1,38502e-03
Perhatian: untuk SPIM hanya huruf "e" kecil yang berlaku untuk notasi ini. (beberapa software sistem seperti JAVA memperbolehkan menggunakan huruf besar atau hirif kecil).
Quest 9: Berapa banyak digit kah yang diperlukan untuk notasi di atas? Berapa digit untuk mantissa dan berapa digit untuk eksponen?
Jawab: 8. 6 digit mantisa, 2 digit eksponen
Nilai Negatif
Notasi untuk angka negatif memiliki tanda negatif di depan digit pertama
-1,38502 × 10^03 = -(1,38502 × 10^03) = -1385,02
Notasi untuk angka yang lebih kecil mempunyai dua tanda negatif, satu untuk menegatifkan angka, satu lagi untuk menggerakkan koma pecahan ke kiri.
-1,38502 × 10^-3 = -(1,38502 × 10^-3) = -0,00138502
-1,38502 × 10^03 = -(1,38502 × 10^03) = -1385,02
Notasi untuk angka yang lebih kecil mempunyai dua tanda negatif, satu untuk menegatifkan angka, satu lagi untuk menggerakkan koma pecahan ke kiri.
-1,38502 × 10^-3 = -(1,38502 × 10^-3) = -0,00138502
Eksponen Negatif
Eksponen menunjukkan kelipatan 10 dari mantissa, sejauh mana float menunjukkan koma desimal.
10^+n artinya gerakkan tanda koma ke kanan
10^-n artinya gerakkan tanda koma ke kiri
1,82371 × 10^1 = 1,82371 × 10 = 18.2371 (koma bergerak 1 langkah ke kanan)
1,82371 × 10^-1 = 1,82371 × ,1 = ,182371 (koma bergerak 1 langkah ke kiri)
1,82371 × 10^2 = 1,82371 × 100 = 182.371 (koma bergerak 2 langkah ke kanan)
1,82371 × 10^-2 = 1,82371 × ,01 = ,0182371 (koma bergerak 2 langkah ke kiri)
Quest 7: tulislah 0,000456 dalam notasi ilmiah
Jawab: 0,000456 = 4,56 × 10^-4
10^+n artinya gerakkan tanda koma ke kanan
10^-n artinya gerakkan tanda koma ke kiri
1,82371 × 10^1 = 1,82371 × 10 = 18.2371 (koma bergerak 1 langkah ke kanan)
1,82371 × 10^-1 = 1,82371 × ,1 = ,182371 (koma bergerak 1 langkah ke kiri)
1,82371 × 10^2 = 1,82371 × 100 = 182.371 (koma bergerak 2 langkah ke kanan)
1,82371 × 10^-2 = 1,82371 × ,01 = ,0182371 (koma bergerak 2 langkah ke kiri)
Quest 7: tulislah 0,000456 dalam notasi ilmiah
Jawab: 0,000456 = 4,56 × 10^-4
Notasi Ilmiah
Untuk mengetasi masalah ini IEEE ( institut Elektrikal dan Elektronik Engineer) membuat sebuah standar untuk floating point. Inilah yang disebut IEEE 754 standar, rilis pada tahun 1985 setelah bertahun-tahun dikembangkan. Semua hardware dan software akhirnya mengikuti standar ini (banyak processor juga support dengan standar lain bagaimanapun juga).
Ide dari floating point muncul dari notasi ilmiah untuk angka. Kamu mungkin pernah melihat ini sebelumnya. Berikut adalah notasi ilmiah untuk angka:

Mantisa selalu mempunyai koma desimal di antara angka pertama dan kedua. Rumus di atas mempunyai arti:
1,38502 × 1000 = 1385,02
Koma desimal bergerak "float" ke mana dia diartikan. Pengaruhnya adalah mantisa memberikan digitnya sedangkan eksponen mengatakan dimana tanda koma nya seharusnya berada.
Quest 6: tulislah notasi ilmiah dari 243,92
Jawab: 243,92 = 2,4392 × 10^2
Ide dari floating point muncul dari notasi ilmiah untuk angka. Kamu mungkin pernah melihat ini sebelumnya. Berikut adalah notasi ilmiah untuk angka:

Mantisa selalu mempunyai koma desimal di antara angka pertama dan kedua. Rumus di atas mempunyai arti:
1,38502 × 1000 = 1385,02
Koma desimal bergerak "float" ke mana dia diartikan. Pengaruhnya adalah mantisa memberikan digitnya sedangkan eksponen mengatakan dimana tanda koma nya seharusnya berada.
Quest 6: tulislah notasi ilmiah dari 243,92
Jawab: 243,92 = 2,4392 × 10^2
Kompabilitas Floating Point
Sampai pada tahun 1985 tiap manufaktur hardware mempunyai jenis floating pointnya sendiri-sendiri. Jeleknya, mesin yang berbeda dari manufaktur yang sama mungkin memiliki floating point yang berbeda! Dan ketika floating tidak support di hardaware, kompiler yang berbeda akan menghasilkan floating point dengan jenis yang berbeda.
Situasi menjadi sangat mengerikan. Mempertimbangkan sebuah tape yang berisi data yang ditulis oleh mainframe IBM. Sekarang tape tersebut harus dibaca oleh minikomputer DEC. Katakanlah bit-bit di dalam tape tersebut bisa dibaca dengan benar. Tapi DEC menggunakan jenis floating point yang berbeda dari IBM. Menerjemahkan bit-bit tersebut sangatlah susah! Masalah seperti ini yang umumnya disebut "legacy data". NASA memiliki banyak sekali tape dari berbagai misi luar angkasa yang ditulis dalam bermacam-macam format. Sebagian data ini sudah tidak terurus karena kurangnya program yang bisa membacanya.
Quest 5: haruskan sebuah perhitungan angka dijalankan pada dua komputer menghasilkan hasil yang sama?
Jawab: Ya. tapi sebelum digunakannya standar floating point, hal ini tidak menjadi sesuatu yang benar
Situasi menjadi sangat mengerikan. Mempertimbangkan sebuah tape yang berisi data yang ditulis oleh mainframe IBM. Sekarang tape tersebut harus dibaca oleh minikomputer DEC. Katakanlah bit-bit di dalam tape tersebut bisa dibaca dengan benar. Tapi DEC menggunakan jenis floating point yang berbeda dari IBM. Menerjemahkan bit-bit tersebut sangatlah susah! Masalah seperti ini yang umumnya disebut "legacy data". NASA memiliki banyak sekali tape dari berbagai misi luar angkasa yang ditulis dalam bermacam-macam format. Sebagian data ini sudah tidak terurus karena kurangnya program yang bisa membacanya.
Quest 5: haruskan sebuah perhitungan angka dijalankan pada dua komputer menghasilkan hasil yang sama?
Jawab: Ya. tapi sebelum digunakannya standar floating point, hal ini tidak menjadi sesuatu yang benar
Floating Point Zaman dulu
Komputer digital pertama (menurut beberapa sumber) yakni Z3, dibuat oleh Konrad Zuse pada tahun 1941 menggunakan representasi floating point. Komputer ini memiliki clock lima sampai sepuluh Hertz dan sebuah memory 64 word 22bit! (mesin pendahulunya Z1 juga menggunakan floating point tapi masih belum bisa disebut sebagai komputer karena susah diprogram).
Komputer zama dulu dibuat untuk melakukan perhitungan sain maupun teknik jadi tidak mengherankan jika penemuan floating poin terjadi pada saat yang sama. Di tahun-tahun berikutnya disadari bahwa komputer menjadi alat yang sangat berguna, dan bukan hanya menjadi kalkulator. Seringkali floating point tidak didukung.
Banyak sekali minikomputer dan microprocessor dulu tidak support floating point pada hardware. Sebagai contoh, chip processor intel sebelum 80486 tidak mendukung floating point secara langsung. Sebuah operasi floating point di dalam program (ditulis dalam C, misalnya) dikompile ke dalam barisan intruksi manipulasi bit yang membutuhkan operasi-operasi. Komputer graphic maupun teknik seringkali memiliki chip tambahan yang mengoperasikan floating point secara hardware.
Processor MIPS sangatlah kuat untuk floating point, dan telah mendukung standar IEEE dari sejak awal. Chip MIPS seringkali digunakan pada teknik tinggi dan workstation grafis dan sangat terkenal dengan floating pointnya yang cepat.
Jumat, 07 Juni 2013
Floating Point
Ide pokok dari floating point adalah kita memiliki sejumlah bit yang tetap (misalkan 32 atau 64) dan tanda koma sebagai identitas pecahan berada di mana saja diantara bit-bit tersebut sesuai kebutuhan. Tentu saja, komputer hanya menyimpan pola-pola bit, lalu bagaimana kamu bisa mengetahui berada di mana tanda koma nya? beberapa pola bit di dalam floating point menerjemahkan atau mengartikan dimana letak tanda koma tersebut.
Skema representasi floating point bisa merepresentasikan angka yang sangat kecil atau yang sangat besar. Ketika kita sedang mengoperasikan floating point, maka biner dengan posisi koma yang benar atau sejajar. Programmer tidak bekerja untuk menjaga tanda-tanda ini bekerja dengan benar, programmer hanya memasukkan nilainya kemudian menyerahkan segalanya ke mesin.
Quest 3: apakah floating point adalah ide modern atau ide kuno?
Jawab: ide kuno
Skema representasi floating point bisa merepresentasikan angka yang sangat kecil atau yang sangat besar. Ketika kita sedang mengoperasikan floating point, maka biner dengan posisi koma yang benar atau sejajar. Programmer tidak bekerja untuk menjaga tanda-tanda ini bekerja dengan benar, programmer hanya memasukkan nilainya kemudian menyerahkan segalanya ke mesin.
Quest 3: apakah floating point adalah ide modern atau ide kuno?
Jawab: ide kuno
Kenapa Floating Point?
Representasi floating point membuat perhitungan numerik menjadi lebih mudah. Kamu boleh saja membuat sebuah program yang hanya berisi integer atau fixed point, namun akan menjadi sulit atau rawan error. Misalnya kamu membuat program, yang mana integer di dalam program tersebut adalah representasi 100kali dari data. Integer 2345 misalnya jika di dalam data maka akan menjadi 23.45. Selama kamu konsisten semua akan berjalan dengan baik.
Hal yang sama juga berlaku di fixed point, kamu akan secara konsisten mengatakan sebuah integer yang secara ilusi mempunyai koma pecahan desimal di tengah-tengah data tersebut. Meskipun pada kenyataannya tidak ada tanda koma di situ namun secara konvensi atau secara konsisten kamu menganggapnya ada.
Namun tidaklah mudah untuk mengatakan kamu bisa konsisten. Seorang programmer harus tau di mana letak koma yang menjadi tanda pecahan desimal, apakah di tengah-tengah sebuah data atau di mana. Kadang kala ada sebuah program yang membuatmu untuk menggunakan tanda pecahan yang bisa berubah-ubah posisinya, misalnya sebuah program peta, kamu akan menjumpai angka (katakanlah 0,00000010 meter sampai 0,00001000 meter) kasus-kasus semacam ini dimana kamu memerlukan bilangan yang nilai pecahannya bisa merepresentasikan pecahan desimal lebih presisi atau lebih luwes dengan cara menggerakkan tanda koma yang ada di pecahan tersebut.
Quest 2: Ketika sebuah tanda pecahan desimal bergerak baik ke kanan atau ke kiri untuk memberikan pernyataan angka pecahan yang lebih luwes, disebut apakah tanda koma itu?
Jawab: Float
Hal yang sama juga berlaku di fixed point, kamu akan secara konsisten mengatakan sebuah integer yang secara ilusi mempunyai koma pecahan desimal di tengah-tengah data tersebut. Meskipun pada kenyataannya tidak ada tanda koma di situ namun secara konvensi atau secara konsisten kamu menganggapnya ada.
Namun tidaklah mudah untuk mengatakan kamu bisa konsisten. Seorang programmer harus tau di mana letak koma yang menjadi tanda pecahan desimal, apakah di tengah-tengah sebuah data atau di mana. Kadang kala ada sebuah program yang membuatmu untuk menggunakan tanda pecahan yang bisa berubah-ubah posisinya, misalnya sebuah program peta, kamu akan menjumpai angka (katakanlah 0,00000010 meter sampai 0,00001000 meter) kasus-kasus semacam ini dimana kamu memerlukan bilangan yang nilai pecahannya bisa merepresentasikan pecahan desimal lebih presisi atau lebih luwes dengan cara menggerakkan tanda koma yang ada di pecahan tersebut.
Quest 2: Ketika sebuah tanda pecahan desimal bergerak baik ke kanan atau ke kiri untuk memberikan pernyataan angka pecahan yang lebih luwes, disebut apakah tanda koma itu?
Jawab: Float
Langganan:
Komentar (Atom)

