Laman

Minggu, 05 Mei 2013

Infinity angka yang hilang

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

Presisi yang terbatas

Ini pertanyaan mudah. Jika N bit digunakan maka akan ada sejumlah 2banyaknya 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

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

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

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?
Power of 20110,1001
8421,0.50.250.1250.0625











Jawab: 4 + 2 + 0,5 + 0,0625 = 6,5625