[Quick] Integer Representation

/
3 Comments
Apa itu 8 bit, 16 bit, 32 bit, 64 bit?

Pasti sering denger kan?

Pertama - tama saya jelaskan dulu apa itu bit dan apa itu byte.

Bit itu suatu data yang cuman nyimpen 0 (false) atau 1 (true).
Sesimpel itu, tapi jika digabung2 akan lebih banyak maknanya.

Dan satu byte adalah 8 bit, udah gitu doang.

Integer yang biasanya ditemukan dalam dunia programming itu biasanya bisa dibedakan jadi 2 tipe, signed dan unsigned.

Apa artinya? Secara sederhana signed itu bisa mengandung nilai negatif, sedangkan unsigned cuman nilai positif doang.

Untuk jelasnya aku jelasin yang unsigned dulu karena lebih gampang.
Misalkan 8 bit unsigned integer, yang biasanya disebut char, itu ada integer dengan 8 bit misalnya 01010110.
Angkanya secara sederhana dengan mengubah itu dari basis 2 ke basis 10 (supaya bisa dimengerti manusia :v).

Cara ngubahnya itu tiap posisi bit itu kita kasih nomor dari paling kanan itu 1, semakin ke kiri itu adalah 2 kali dari sebelah kanannya.

Contoh...
0 1 0 1 0 1 1 0
128 64 32 16 8 4 2 1

Nah yang ada 1 nya itu ditambah semua, kalau contoh di atas 64 + 16 + 4 + 2 = 86.

Gampang bukan?

Artinya range untuk 8 bit unsigned integer itu dari 00000000 = 0 sampe 11111111 = 255. Jadi sekarang harusnya kamu tahu berapa range untuk 16 bit unsigned integer (short). Hal itu juga berlaku untuk 32 bit (long) dan 64 bit (long long).
Sebagai latihan silahkan dicoba cari sendiri :D... kalau perlu tinggalin komen dibawah...

Trus kita selingkuh (beralih) ke signed integer.
Biasanya program - program komputer kalau bicara signed integer itu dia pake Two's complement.
Kenapa aku bilang gini? Karena ada lebih dari satu cara untuk mempresentasikan signed integer.

Bit paling kiri di signed integer itu namanya signed bit, itu yang menandakan itu bilangan negatif apa kagak, kalau 0, artinya positif, kalau 1 artinya negatif.

Untuk representasi bilangan positif, sama kayak sebelumnya dengan bit paling kiri itu 0.
Untuk representasi bilangan negatif ini yang agak dikit ribet, jadi caranya semua bit diinvert dulu semuanya (0 jadi 1, 1 jadi 0), dan kita memperoleh angka yang positif, tapi sebelum dibaca, kita harus tambah satu dulu baru kita baca sebagai angka positif (bingung? langsung aja ke contoh).

Contoh bilangan negatif : 11101000
Pertama kita tau itu negatif (ngeliat bit pertama), karena itu kita invert semua bitnya : 00010111
Trus kita tambah 1 ke bilangan itu (penjumlahan basis 2 ya, diinget) :

    111  <<< caret
00010111
       1
-------- +
00011000

Jadi hasilnya 00011000, trus diitung pake kayak ngitung positif, 16 + 8 = 24. Jadi karena kita tahu ini negatif, hasilnya jadi -24, ok ribet bukan?
Dan artinya range untuk 8 bit signed integer itu 1000000 = -128 sampe 01111111 = 127. Dan cara yang sama berlaku untuk 16 bit, 32 bit, dan 64 bit.
Dicoba sendiri yak :v.

Dan kalau ada yang bingung kenapa dirancang kayak gini, jawabannya ada pada penjumlahan dua bilangan, karena kalau pakai kayak gini menjumlahkan positif sama negatif value itu gampang. Seandainya 86 (01010110) dijumlah dengan -24 (11101000), untuk ngejumlahin keduanya tinggal kayak ngejumlahin binary biasa.

11        <<< caret
 01010110
 11101000
--------- +
x00111110

Bisa dilihat pas ngejumlahin bisa lebih dari 8 bit, karena itu yang lewat itu dibuang, hasilnya cuman ngambil 00111110, dan itu adalah 32 + 16 + 8 + 4 + 2= 62 dimana 86 + (-24) = 62.
Interesting enough?

Nah karena bisa lebih dari 8 bit dan ada bit yang dibuat ini yang biasanya menyebabkan angka gede banget ujung2nya jadi negatif, misalnya kita punya 127 dalam 8 bit signed integer, kita tambahin satu aja, dia bakal menjadi -128 (muter lagi).

Ok mungkin itu dulu :-?... semoga menjelaskan. Dan untuk link baca - baca selanjutnya :

Two's Complement


You may also like

3 komentar:

  1. bukannya pelatnas 3 dibahas yak? ._.

    BalasHapus
  2. gw masih males baca...

    izin book mark dulu... atau please di bikin persimple lagi

    bikin penjelasan untuk orang bodoh kek saya mengerti....

    BalasHapus

alijaya. Diberdayakan oleh Blogger.