Arsitektur Komputer – Tentang Bilangan

Hari Jumat lalu, saya untuk pertama kalinya belajar tentang Arsitektur Komputer. Ya, tidak menyenangkan sama sekali. Saya baru tahu kalau benda ini merupakan sesuatu yang sebenarnya tidak begitu pintar. Saya ingin memaparkan beberapa hal tentang benda menarik bernama komputer ini, secara bertahap. Yang ingin saya bahas kali ini adalah tentang basis bilangan.

Mari ke contoh sederhana. Bagaimana Anda membaca ini: 21031? Ya, tentu saja, dua puluh ribu tiga puluh satu. “Anda kok bego sekali!”, mungkin itu kata Anda. Sabar, sabar. Apa yang Anda bilang tadi, adalah bilangan dalam basis sepuluh. Komputer tidak mengenalinya sama sekali. Lalu bagaimana yang komputer kenal? Ini nih: 101001000100111. Apa nih? Ini bukan seratus satu triliun sekian-sekian. Ini adalah bilangan biner yang nilainya jika dikonversi ke basis 10 sama dengan 21031.

“Jari tangan manusia cuma sepuluh!”, kata dosen saya. Makanya kita menggunakan basis sepuluh. Perlu Anda tahu, misalnya 1023, itu sebenarnya artinya seperti ini:


Notasi: m^n berarti m x m x m x m ... dst sebanyak n kali.

1023 = 1 x 10^3 + 0 x 10^2 +2 x 10^1 + 3 x 10^0

Karena basis 10, makanya dikali dengan 10 pangkat sekian.

Bilangan ternyata memiliki banyak sistem. Dari basis 2 (biner) sampai basis 16 (hexadecimal). Cukup repot ternyata. Saya beri contoh. Misal sebuah bilangan 1011011, sebenarnya bisa dibaca sebagai bilangan desimal juga. Jadi, kalau dibaca di bilangan desimal menjadi


1 x 2^6 + 0 x 2^5 + 1 x 2^4 + 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 1 x 2^0 = 64 + 0 + 16 + 8 + 0 + 2 + 1 = 91

Perhatikan. Karena basis 2, makanya dikali 2 pangkat sekian dst.

Mahasiswa Teknik Informatika biasanya akrab dengan yang beginian😀.  Cuma inikah? Tidak. Seperti yang saya bilang, dari 1 sampai 16. Misalnya sebuah bilangan basis 8: 206, maka nilai ekivalennya dalam desimal adalah:


2 x 8^2 + 0 x 8^1 + 6 x 8^0 = 128 + 0 + 6 = 134

Ada lagi yang agak pusing. Namanya hexadecimal. Misalnya begini, berapa BF? Anda mungkin mengira saya penggemar pornografi. Padahal, BF merupakan sebuah angka dalam basis 16. Dalam desimal, nilai ekivalennya adalah:


Dalam hexadecimal, A = 10, B = 11, C = 12, dst sampai F = 15

B = 11, F = 15, berarti

BF = 11 x 16^1 + 15 x 16^0 = 176 + 15 = 191

Menarik bukan? Ada banyak ternyata yang belum kita tahu ternyata. Waktu saya belajar dengan teman-teman saya di TI Universitas Paramadina, dosen saya bertanya, “Berapa 1 + 1”? Bapak ini bermaksud bertanya dalam sistem bilangan biner. Teman saya jawab, “sepuluh pak!”😀 Maksudnya satu nol (10). Ya, dalam bilangan biner, begitu aturan penjumlahannya. Saya merasa kembali ke bangku SD, karena ditanya soal seperti ini.


  1 0 1 1 0 (22)
  1 0 1 1 1 (23)
  --------- +
1 0 1 1 0 1 (45)

Ya, itulah, kerjaan anak TI sehari-harinya. Kedepannya, pasti akan lebih menarik. Saya akan membagikannya kalau ada waktu nge-blog lagi🙂

Semoga bermanfaat!

Tambahan: Saya mengetik sebuah program dalam C++ untuk latihan konversi bilangan desimal (basis 10) ke bilangan dengan basis lain yang nilainya kurang dari atau sama dengan 10. Salin kode dibawah ini, lakukan compile di compiler C++ kesayangan Anda. Selamat belajar🙂

/*
	System Number Conversion
	(c) Imam Hidayat - Last update: October 8th 2010
*/

#include <iostream>
#include <windows.h>

using namespace std;

const int MAX_DIGIT = 100;

void convert(int number, int base) {	
	int temp[MAX_DIGIT];
	int counter = 0;

	int i;
	int div_result = number;

	while (div_result > 0) {
		temp[counter] = div_result % base;
		div_result /= base;
		counter++;
	}

	if (number == 0)
		cout << 0;
	else {
		for (i = counter-1; i >= 0; i--)
			cout << temp[i];
	}
}

int main() {
	int number, base;
	
	cout << "System Number Conversion - From decimal to other number system" << endl;
	cout << "(c) Imam Hidayat 2010 - University of Paramadina" << endl << endl;

	cout << "Input the number, and then the base you want to convert! base <= 10" << endl;
	cout << "Number      : "; cin >> number;
	cout << "Base target : "; cin >> base;

	cout << endl;
	
	if ((base > 10) || (base < 2)) {
		cout << "Base input error!" << endl;
		exit(1);
	}

	cout << "You want to convert " << number << " (decimal) to base " << base << "!" << endl;
	cout << "Here is the result:" << endl << endl;
	cout << number << " (10) = ";
	convert(number, base);
	cout << " (" << base << ")" << endl << endl;

	system("pause");

	return 0;
}

Screenshot dari aplikasi

Leave a Reply

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 / Change )

Twitter picture

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

Facebook photo

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

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s