Presisi yang terbatas dari fixed point (ataupun floating point) merupakan sebuah masalah bagi programmer. Bahkan menggunakan 64bit double precision floating point (misal type data java double) presisi masih terbatasi. Hanya 264 angka yang bisa di representasikan. Ini memang banyak tapi tetap saja ada sejumlah infinity real number yang tidak bisa direpresentasikan.
(Jika kamu belum paham kalkulus tidak usah khawatir, hanya berpikirlah bahwa kamu bisa membuat pecahan yang tidak terbatas)
Quest 11: Berapa banyak digit yang dimiliki oleh nilai phi?
Jawab: infinity
Minggu, 05 Mei 2013
Presisi yang terbatas
Ini pertanyaan mudah. Jika N bit digunakan maka akan ada sejumlah 2N banyaknya yang bisa direpresentasikan oleh digit tersebut, tidak peduli apa jenis yang direpresentasikannya itu. 8bit bisa merepresentasikan sejumlah 256 integer unsigned, 256 integer two complement, maupun 256 angka pecahan (fixed point) dan seterusnya. Berikut adalah gambar garis yang menunjukkan 256 nilai yang bisa direpresentasikan oleh fixed point.
Nilai terkecil adalah zero 00000000 nilai terbesar adalah 15,9375. Angka terkecil setelah nol adalah 0,0625 Semua nilai yang direpresentasikan oleh bilangan ini adalah merupakan kelipatan dari 0,0625.
Cara lain untuk memahami fixed point notation adalah dengan menganggap bahwa 8bit akan menghasilkan 0-255 angka yang angka terkecilnya merupakan 0,0625. dan setiap naik satu angka merupakan kelipatan dari nilai dasarnya yaitu 0,0625. Misal jika
00000001 tanpa koma = 1
00000010 tanpa koma = 1+1 = 2
0000,0001 dengan koma = 0,0625
0000,0010 dengan koma = 0,0625+0,0625 = 0,125
Jarak antara dua buah bilangan bulat jika menggunkan metode ini hanya 16 pembagian, secara 1/16 = 0,0625. hal ini membuat metode bilangan menjadi tidak efektif karena akan menimbulkan banyak gaps diantara tiap angka.
Masalah penting: dalam sebuah pecahan dituntut sebuah presisi yang dinamis, dan tingkat ketelitian yang sesuai agar bisa layak dipakai sebagai sebuah representasi pecahan.
Quest 10: (ingat kalkulus) berapakah jumlah real number yang berada di antara 0,0 sampai 0,0625?
Jawab: Tak terhingga
Nilai terkecil adalah zero 00000000 nilai terbesar adalah 15,9375. Angka terkecil setelah nol adalah 0,0625 Semua nilai yang direpresentasikan oleh bilangan ini adalah merupakan kelipatan dari 0,0625.
Cara lain untuk memahami fixed point notation adalah dengan menganggap bahwa 8bit akan menghasilkan 0-255 angka yang angka terkecilnya merupakan 0,0625. dan setiap naik satu angka merupakan kelipatan dari nilai dasarnya yaitu 0,0625. Misal jika
00000001 tanpa koma = 1
00000010 tanpa koma = 1+1 = 2
0000,0001 dengan koma = 0,0625
0000,0010 dengan koma = 0,0625+0,0625 = 0,125
Jarak antara dua buah bilangan bulat jika menggunkan metode ini hanya 16 pembagian, secara 1/16 = 0,0625. hal ini membuat metode bilangan menjadi tidak efektif karena akan menimbulkan banyak gaps diantara tiap angka.
Masalah penting: dalam sebuah pecahan dituntut sebuah presisi yang dinamis, dan tingkat ketelitian yang sesuai agar bisa layak dipakai sebagai sebuah representasi pecahan.
Quest 10: (ingat kalkulus) berapakah jumlah real number yang berada di antara 0,0 sampai 0,0625?
Jawab: Tak terhingga
Algoritma penambahan biner sudah benar
Algoritma penambahan biner, berhasil digunakan sebagai penjumlahan untuk pecahan fixed point. Dulu komputer jadul dan kalkulator menggunakan rangkaian elektronik yang sama untuk digunakan sebagai penjumlahan integer biner (baik two complemen maupun unsigned) dan penjumlahan biner pecahan fixed point. Hal ini sepertinya menjanjikan.
Bagaimanapun fixed point tidak sebagus daripada floating point yang sekarang sudah menggantikannya. Floating point akan dibahas di bab selanjutnya.
Quest 9: berapa banyak nilai yang bisa direpresentasikan menggunakan 8bit fixed point notation?
Jawab: 28 = 256
Bagaimanapun fixed point tidak sebagus daripada floating point yang sekarang sudah menggantikannya. Floating point akan dibahas di bab selanjutnya.
Quest 9: berapa banyak nilai yang bisa direpresentasikan menggunakan 8bit fixed point notation?
Jawab: 28 = 256
Cara menjumlahkan fixed point
Berikut adalah angka yang lain 00010100. Angka ini merepresentasikan desimal 1,25 . dan berikut adalah algoritma umum yang biasa digunakan untuk menjumlahkan dua buah pecahan biner
Quest 8: Tentu saja yang jadi pertanyaan adalah apakah penjumlahan pecahan biner menghasilkan hasil yang benar seperti pada penjumlahan pecahan desimal?
| fixed point | as decimal | |
| 01101001 | 6,5625 | |
| 00010100 | 1,2500 | |
| 01111101 | 7,8125 |
Quest 8: Tentu saja yang jadi pertanyaan adalah apakah penjumlahan pecahan biner menghasilkan hasil yang benar seperti pada penjumlahan pecahan desimal?
Notasi Fixed Point
Dengan kertas dan pensil, kamu bebas menulis berapa digit yang kamu mau. Tapi komputer (biasanya) menggunakan digit yang dibatasi sebagai perwakilan dari jenis data tertentu. Sebagai contoh interger 32bit, jadi bisakah jumlah bit yang terbatas ini digunakan untuk mewakili pecahan?
Ya. Mari kita lihat sejenak metode kuno yang sekarang sudah jarang lagi digunakan. Pada zaman dahulu, kalkulator elektronik dan komputer menggunakan notasi titik tetap untuk mengekspresikan pecahan. Dengan notasi titik tetap, angka diekspresikan dengan cara menganggap sejumlah digit tertentu (misal delapan) dan koma/titik yang memisahkan antara bilangan bulat dan pecahan ini di anggap pasti berada di sela-sela digit tersebut.
Sebagai contoh, mari kita anggap sebuah angka biner yang menggunakan notasi titik tetap, sebuah koma berada di tengah-tengah 8bit angka ini. Sekarang coba kamu terjemahkan angka tersebut menjadi sebuah bilangan desimal:
Quest 7:
Di skema berikut ini pola bit 01101001 merepresentasikan angka berapa?
Jawab: 4 + 2 + 0,5 + 0,0625 = 6,5625
Ya. Mari kita lihat sejenak metode kuno yang sekarang sudah jarang lagi digunakan. Pada zaman dahulu, kalkulator elektronik dan komputer menggunakan notasi titik tetap untuk mengekspresikan pecahan. Dengan notasi titik tetap, angka diekspresikan dengan cara menganggap sejumlah digit tertentu (misal delapan) dan koma/titik yang memisahkan antara bilangan bulat dan pecahan ini di anggap pasti berada di sela-sela digit tersebut.
Sebagai contoh, mari kita anggap sebuah angka biner yang menggunakan notasi titik tetap, sebuah koma berada di tengah-tengah 8bit angka ini. Sekarang coba kamu terjemahkan angka tersebut menjadi sebuah bilangan desimal:
Quest 7:
Di skema berikut ini pola bit 01101001 merepresentasikan angka berapa?
| Power of 2 | 0 | 1 | 1 | 0 | , | 1 | 0 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|---|
| 8 | 4 | 2 | 1 | , | 0.5 | 0.25 | 0.125 | 0.0625 | |
Jawab: 4 + 2 + 0,5 + 0,0625 = 6,5625
Langganan:
Komentar (Atom)
