semua tentang kotak pintar

Just another WordPress.com weblog

Main-main dengan Integer Besar November 2, 2009

Filed under: Uncategorized — imanlhakim @ 2:41 pm

Ada hal yang menarik bagi saya belakangan ini, kisahnya diawali beberapa waktu lalu saya harus membuat sistem berkecepatan tinggi dalam mencari data, karena datanya juga banyak banget saya harus membuat hash yang kapasitasnya besar, yang artinya butuh bermain dengan bilangan integer yang besar pisan, singkat cerita kerjaan saya sudah diaggap selesai….ehhh sebulan terakhir ini ada beberapa mahasiswa yang juga menanyakan tentang bagaimana main2 dengan integer yang besar, yang dimaksud besar disini adalah yang melebihi kapasitas primitive/build-in dari java, C/C++,

saya egak akan membahas dengan detail gimana caranya, tapi berikut ini tipsnya, tips ini tentu untuk yang beginner:

  1. Harus disadari bahawa bilangan interger besar tidak bisa disimpan di tipe data primitive yang disediakan bahasa Java/C/C++, in kenyataan pahit tapi harus diterima, yang artinya kita harus menggunakan tipe data composite, bisa berupa struct atau class. konsekwensinya jangan berharap ada cara mudah&aman mengubah bilangan integer besar kedalam tipe data seperti int, long, int, long long, char, byte, ulong, uint, int32, int64, int128(hanya sistem tertentu). cara paring aman adalah menggunakan array, baik char[] atau String.
  2. Tipe data composite untuk bilangan interger besar library-nya sudah banyak, bahkan untuk embedded system sekalipun, jadi kecuali kurang kerjaan tidak perlu bikin sediri.
  3. Walaupun library sudah banyak lengkap dengan documentasi cara penggunaannya, untuk kasus seperti ini ada baiknya memahami bagaimana tipe data tersebut berkerja. untuk yang menggunakan java.math.BigInteger bisa lihat source code class tersebut di folder <jdk>/src.zip/java/math/BigInteger.java, dalam source code nya ada comment yang lengkap yang sangat membantu memahami bagaimana dia bekerja. bagi yang menggunakan C dan C+ bisa lihat header2 dari library yang digunakan, jika pingin tahu lebih baik bisa pelajari proyek NUMAL, lewat buku http://www.amazon.com/Numerical-Scientists-Engineers-Symbolic-Computation/dp/084937376X/ref=sr_1_1/192-5155796-6635500?ie=UTF8&qid=1257169355&sr=8-1, jika belum terpuaskan mungkin bisa baca buku cohen; Computer Algebra and Symbolic Computation: Mathematical Methods.
  4. Jika sudah berhubungan dengan tipe data seperti ini, mungkin juga saatnya mengupgrade gaya programming, apalagi harus membuat code yang efficient, sebaiknya mulai melupakan programming trial by error, saatnya menganggap programming sebagai engineering, bisa diawali dengan membaca buku Alexander; Elements of Programming , buku alexander ini banyak mereference ke buku yang wajib dimiliki, dibaca dan dipahmi oleh semua yang mengaku programmer, yaitu The Art of Computer Programming karangan Donald E Knuth, bukunya tebal dan menjemukan, terdiri dari 4 volume (jilid), kecuali jilid yang ke 3, buku ini beberapa tahun lalu saya lihat banyak di obral di palasari, jika pintar nawar bisa mendapatkan per jilid 40rb. tips nya tawar sambil pergi pura-pura egak butuh, jangan lupa sambil bilang “itu kan buku komputer yang udah lama banget”. :P .

selamat bertualang di dunia yang aneh tapi dulu terasa menyenangkan bagi saya, sekarang kayanya udah ketuaan jadi saya suka agak sakit kepala kalau main didunia ini, kaya kebanyakan makan sate kambing.

 

4 Responses to “Main-main dengan Integer Besar”

  1. CG Berkata

    thank you. tumben postingnya bermanfaat :D

  2. xsalefter Berkata

    Jiah.. Ketuaan. James Gosling dah tua masih nge-hack JVM sama ikut-ikut nentuin specs core Java tuh om.. :D .

  3. Budi Rahardjo Berkata

    saya sekarang sedang suka GNU Multi Precision Library (GMP). bagus dan mudah dipakai.

  4. imanlhakim Berkata

    @CG: teganya….emang didunia ini hanya cryptography yang bermanfaat.
    @xsa: Gosling kan emang hidupnya dari situ, aku mah dah egak mood, terakhir ngurus gituan 15 tahun yang lalu. dan ditinggalkan karena egak bisa jadi profesi disini mah.
    @Mr. BR: saya egak pernah lihat malah yang GNU. Bagusnya saya setuju, tapi kalau mudah relatif pak :) , tergantung jam terbang.


Tinggalkan Balasan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Ubah )

Twitter picture

You are commenting using your Twitter account. Log Out / Ubah )

Facebook photo

You are commenting using your Facebook account. Log Out / Ubah )

Connecting to %s

 
Ikuti

Get every new post delivered to your Inbox.