Representasi Bilangan dalam Komputer
Representasi Bilangan dalam Komputer
INFORMASI
Pokok Bahasan
• Representasi informasi
• Bit, byte, dan word
• Representasi data numerik dan basis
bilangan
• Representasi komplemen dua dan
bertanda
• Sistem fixed point dan floating point
• Representasi data bukan numerik (kode
karakter)
22022008 #2
Representasi Informasi (1)
Converter
Internal Representation
External Representation
22022008 #5
Word Size (1)
• Word merupakan sejumlah bit berukuran tetap yang
ditangani secara bersama-sama oleh komputer
• Sebuah word dapat merupakan:
– ukuran register
– ukuran suatu tipe data
– jumlah data dalam sekali transfer
– lebar alamat suatu memori
• Kebanyakan mesin menggunakan 32 bit (4 byte)
• Sistem high-end menggunakan 64 bit (8 byte)
• Satuan word adalah byte
• Contoh:
– Intel: 1 word = 16 bit (8086)
– Tetap kompatibel dengan, x86, IA-32, IA-64
22022008 #6
Word Size (2)
d = desimal; b = bit
COA/Endro Ariyanto/22022008 #7
Representasi Data
• Contoh ukuran Objek pada C (dalam byte)
Tipe Data C Compaq Alpha Typical 32-bit Intel IA32
int 4 44
long int 84 4
char 11 1
short 22 2
float 44 4
double 88 8
long double 88 10/12
char * 84 4
22022008 #8
Bilangan Desimal (1)
• Representasi bilangan basis 10
– Itu kenapa jari tangan dikenal sebagai “digits”
– Representation bilangan natural untuk transaksi financial
• Kenapa komputer sekarang menggunakan sistem biner
dan bukan desimal ?
• Implementasi secara elektronik
– Sukar disimpan
ENIAC (komp. pertama kali) menggunakan 10 vacuum tubes/digit
– Sukar dikirimkan
Memerlukan presisi yg tinggi untuk meng-encode sinyal dengan 10
level pada single wire
– Kehandalan komponen elektronika turun sejalan dengan waktu
penggunaannya (drift)
Perubahan sebesar 10 % saja sudah mengubah nilai
– Sulit untuk diimplementasikan pada fungsi logika digital
Addition, multiplication, etc.
22022008 #9
Bilangan Desimal (2)
Desimal Biner
22022008 #10
Bilangan Biner
• Representasi bilangan basis 2
– Representasi 1521310 as 111011011011012
– Representasi 1,2010 as 1,0011001100110011[0011]…2
– Representasi 1,5213 X 104 as 1,11011011011012 X 213
• Implementasi Elektronik
– Mudah untuk disimpan sebagai elemen yang bistable (hanya
ada 2 nilai yang berbeda jauh)
– Lebih handal pada wire yang noise dan inaccurate
– Mudah diimplementasikan pada fungsi logika digital
0 1 0
3.3V
2.8V
0.5V
0.0V
22022008 #11
Jenis-Jenis Bilangan Biner
• Bilangan bulat biner tak bertanda (unsigned
integer)
• Bilangan bulat biner bertanda (signed integer)
– Sign/magnitude
– Komplemen 2 (radix complement)
– Komplemen 1 (diminished radix complement)
– Binary Coded Decimal (BCD)
• Bilangan pecahan biner (floating point)
• Excess 2m-1
22022008 #12
Bilangan bulat Biner tak bertanda
(Unsigned Integer)
dndn-1dn-2...d3d2d1d0 = dnrn + dn-1rn-1 + dn-2rn-2 .. d3r3 +
d2r2 + d1r1 + d0r0
d = nilai bilangan;
r = radix (basis bilangan) = jumlah simbol maksimum
n = posisi bilangan, LSB = posisi ke-0
Cakupan bilangan yang bisa disajikan: 0 I 2m-1
Misal bilangan 16 bit: 0 I 216-1 = 0 I 32768
Konversi dari NR ke Nr : R = basis desimal dan r = basis bilangan lainnya
NR = dnrn + dn-1rn-1 + dn-2rn-2 .. d3r3 + d2r2 + d1r1 + d0r0
22022008 #13
Konversi Bilangan (1)
Desimal ke biner 4310 = ...2
43 : 2 = 21 ; sisa 1 d0 (LSB)
21 : 2 = 10 ; sisa 1 d1
10 : 2 = 5 ; sisa 0 d2
5 : 2 = 2 ; sisa 1 d3
2 : 2 = 1 ; sisa 0 d4
1 : 2 = 0 ; sisa 1 d5 Jadi 4310 = 1010112
Latihan:
a. 101010102 = ...10 f. ABCD16 = ...8
b. 500010 = ...2 g. 10010110101001012 = ...10
c. 500010 = ...8 h. 10010110101001012 = ...8
d. 500010 = ...16 i. 10010110101001012 = ...16
e. ABCD16 = ...10 (solusi)
COA/Endro Ariyanto/22022008 #14
Konversi Bilangan (2)
Apa kesimpulan yang dapat diperoleh ?
• Konversi bilangan biner ke bilangan oktal atau sebaliknya
dapat dilakukan dengan lebih mudah dan lebih cepat
dibanding konversi bilangan tersebut ke bilangan desimal
• Konversi bilangan biner ke bilangan heksadesimal atau
sebaliknya dapat dilakukan dengan lebih mudah dan lebih
cepat dibanding konversi bilangan tersebut ke bilangan
desimal
• Konversi representasi data eksternal ke data internal atau
sebaliknya memerlukan proses lebih panjang dan lebih
rumit
• ...
Kapan representasi data eksternal dalam bentuk
heksadesimal dilakukan ?
COA/Endro Ariyanto/22022008 #15
Signed Integer : Sign/magnitude (1)
• Dapat merepresentasikan bilangan negatif
• Simple: Bit terkiri (Most Significant Bit - MSB) dianggap
sebagai bit tanda (sign bit)
– Bit 0 bilangan positif
– bit 1 bilangan negatif
• Bit selain MSB sebagai nilai magnitude absolut bilangan
• Cakupan nilai (I) yang dapat direpresentasikan:
̶ (2m-1 ̶ 1) I +(2m-1 ̶ 1)
m = banyaknya bit
• Misal:
Untuk bilangan 16 bit: ̶ (216-1 ̶ 1) I +(216-1 ̶ 1)
= ̶ 32767 I +32767
22022008 #16
Signed Integer : Sign/magnitude (2)
• Contoh m = 3 :
22022008 #17
Signed Integer: Komplemen 2 (Radix
Complement) (1)
• Biner dalam bentuk 2’s complement
• Disebut sebagai aritmatika modular (modulo)
A = B (mod M)
Bilangan berapapun ditambah dengan M hasilnya tetap !
• Bilangan biner dengan jumlah bit = m,
mempunyai modulo M = 2m
• M = 1000...0, bilangan terbesar: 111...1 = 2m – 1 = M – 1
m nol m satu
0 M-1
• Aritmatika Penjumlahan:
22022008 #23
Signed Integer: Komplemen 2
(Radix Complement) (7)
Komplemen 2 banyak
diterapkan di komputer !!
22022008 #25
Signed Integer: Komplemen 2
(Radix Complement) (9)
Latihan:
Dengan m = 6:
(a) (+6) + (-7)
(b) (+7) + (-6)
(c) (-15) + (-16)
(d) (-20) + (-20)
(e) (+31) + (-31)
(f) (-32) + (+12)
(solusi)
COA/Endro Ariyanto/22022008 #26
Signed Integer: Komplemen 2
(Radix Complement) (10)
22022008 #27
Signed Integer: Komplemen 2
(Radix Complement) (11)
Contoh: m = 4:
(a) (+3) – (+2)
0011 (+3) 0011 (+3)
– 0010 (+2) + 1110 (–2)
1|0001 (+1)
ke carry register
(b) (+3) – (+5)
0011 (+3)
0011 (+3)
– 0101 (+5)
+ 1011 (–5)
1110 (–2)
(c) (-2) – (-5)
1110 (–2) 1110 (–2)
– 1011 (–5) + 0101 (+5)
1|0011 (+3)
ke carry register
22022008 #28
Signed Integer: Komplemen 2
(Radix Complement) (12)
Organisasi fungsional untuk Pengurangan:
unit baru
22022008 #29
Signed Integer: Komplemen 1
(Diminished Radix Complement) (1)
• Diminished = ...
• Merupakan varian dari komplemen 2
• Komplemen dilakukan dengan cara:
– Ganti semua bit 1 dengan 0 dan semua bit 0 dengan 1
– Tanpa penambahan dengan +1
– Carry tidak dibuang
X X
X ( M 1) X
• Cakupan nilai:
2 m 1 1 I 2 m 1 1
• Misal:
Untuk bilangan 16 bit: ̶ (216-1 ̶ 1) I +(216-1 ̶ 1)
= ̶ 32767 I +32767 (sama dengan sign/magnitude)
22022008 #30
Signed Integer: Komplemen 1
(Diminished Radix Complement) (2)
22022008 #31
Signed Integer: Komplemen 1
(Diminished Radix Complement) (3)
22022008 #32
Binary Coded Decimal (BCD) (1)
• Mengapa BCD digunakan ?
– Karena konversi bilangan desimal ke komplemen 2
dapat mendominasi waktu eksekusi
• Konversi : tiap digit desimal empat bit biner
– Contoh: 010 = 00002; 110 = 00012; ...; 910 = 10012
– Tanda ‘+’ dan ‘–’ dengan kombinasi yang belum
dipakai, contoh : 1010 = ‘+’ dan 1011 = ‘–’
• Aplikasi apa yang menggunakan BCD ?
– Aplikasi yang banyak melibatkan data input
maupun output namun sangat sedikit pemrosesan
numerik (contoh : payroll dan inventory)
22022008 #33
Binary Coded Decimal (BCD) (2)
• Contoh
1.23410 = 0001001000110100
1 2 3 4
–56710 = 1011010101100111
‘–’ 5 6 7
22022008 #34
Binary Coded Decimal (BCD) (3)
• Apa kekurangan BCD ?
– Operasi aritmatika lebih lama (lookup table)
dibanding sign/magnitude maupun 2’s dan 1’s
complement
– Penjumlahan bilangan dalam BCD dilakukan per
digit desimal (4-bit) dan menghasilkan carry
desimal (bukan penjumlahan bit per bit)
• Contoh Aritmatika:
(0001) (0001) carry
0110 0011 (+63)
+0100 1001 (+49)
0001 0001 0010(+112)
22022008 #35
Floating Point (1)
Bilangan floating point (pecahan):
dndn-1dn-2...d2d1d0.d-1d-2d-3... =
dnrn+ dn-1rn-1 + dn-2rn-2 ...+ d2r2 + d1r1 + d0r0 +
d-1r-1 + d-2r-2 + d-3r-3 ...
Contoh :
(a) 110,011012 = 1x22 + 1x21 + 0x20 + 0x2-1 + 1x2-2+
• Contoh: Normalisasikan !
(a) 103,510 dengan B = 10 ?
103,510 = 0,1035 x 103
(b) 0,0000111012 dengan B = 2 ?
0,0000111012 = 0,111012 x 2-4
(c) 10011,1102 x 210 dengan B = 2 ?
10011,1102 x 210 = 0,100111102 x 215
22022008 #42
Floating Point: Normalisasi (3)
(d) 0,0000112 x 82 dengan B = 8 ?
8 = 23 pergeseran per 3 bit !
0,0000112 x 82 = 0000,0112 x 81 = 0,0112 x 81
(e) 0,00012 x 165 dengan B = 16 ?
16 = 24 pergeseran per 4 bit !
0,00012 x 165 = sudah normal !
(f) 0,0000112 x 165 dengan B = 16 ?
0,0000112 x 165 = 00000,112 x 164 = 0,112 x 164
22022008 #43
Representasi Mantissa dan Eksponen
• Model representasi yang mana yang digunakan untuk
merepresentasikan mantissa ?
– Sign/magnitude, komplemen 1, komplemen 2 , atau BCD
dapat digunakan, tergantung perancang komputer
– Contoh:
PDP-11 dan VAX-11 menggunakan sign/magnitude
• Model representasi yang mana yang digunakan untuk
merepresentasikan eksponen ?
– Ke-4 model representasi dapat digunakan
– Yang banyak digunakan: notasi bias atau notasi excess-n,
n = 2m-1 -1
22022008 #44
Excess-n (1)
• Cara konversi: e’ = e + 2m-1
– e’ = eksponen bias
– e = eksponen sebenarnya
– m = jumlah bit
• Contoh:
bilangan 8-bit (m = 8) 2m-1 = 128 excess 128
–310 –310 + 12810 = 12510 = 011111012
010 = ...2; –10010 = ...2; 12810 = ...2
• Range nilai:
–2m-1 E +(2m-1–1)
Untuk m = 8 bit: –128 ... +127 e’ = 0 ... 255
• Sama dengan komplemen 2 dengan bit tanda yang
dinegasikan
22022008 #45
Excess-n (2)
• Apa manfaat konversi dari eksponen ke eksponen bias ?
– Mempermudah atau mempercepat perbandingan 2 buah bilangan
• Format F:
– 24 bit mantissa akurasi 7 angka desimal
– 8 bit eksponen eksponen desimal 10±38
COA/Endro Ariyanto/22022008 #49
Berapa jumlah bit untuk
Mantissa dan Eksponen ? (4)
• Format D: (double precision)
– 56 bit mantissa akurasi 16 angka desimal
• Format H:
– 113 bit mantissa akurasi 34 angka desimal
– Cakupan bilangan: –10480 R +10480
• Floating point overflow: fatal error !!
– Terjadi jika bilangan yang akan disimpan lebih besar dari
eksponen positif
– Misal bilangan ½ x 2200 akan disimpan pada tipe bilangan F
• Floating point underflow: di-reset ke nol !
– Terjadi jika bilangan yang akan disimpan lebih kecil dari
eksponen negatif
– Misal bilangan ½ x 2–200 akan disimpan pada tipe bilangan F
22022008 #52
Bagaimana Bit-bit Floating Point disusun ? (2)
• Distribusi bit floating point pada PDP-11 dan VAX-11:
1 8 23 Ukuran field
1 8 55 Ukuran field
Regular
precission s Eksponen bias Mantissa
1 7 56 Ukuran field
Double
precission s Eksponen bias Mantissa
Jika fraksi = 3 digit desimal bertanda dan eksponen = 2 digit desimal bertanda,
maka garis bilangan real terbagi dalam tujuh bagian, yakni :
1. Bilangan negatif yang lebih kecil dari –0.999 x 1099
2. Bilangan negatif antara –0.999 x 1099 dan –0.100 x 10-99
3. Bilangan negatif dengan nilai magnitude sangat kecil kurang dari 0.100 x 10-99
4. Nol
5. Bilangan positif dengan nilai magnitude sangat kecil kurang dari 0.100 x 10-99
6. Bilangan positif antara 0.100 x 10-99 dan 0.999 x 1099
7. Bilangan positif yang lebih besar dari 0.999 x 1099
22022008 #58
Kesalahan-Kesalahan Floating Point (2)
(2) Kerapatan (density)
– Bilangan bilangan real tidak pasti (berubah-ubah)
– Antara dua bilangan real, x dan y, selalu ada bilangan
real lain, z = (x + y)/ 2 continuum (rangkaian
kesatuan)
(3) Kesalahan pembulatan (round-off error)
– Tidak dapat merepresentasikan setiap bilangan floating
point secara tepat
– Contoh:
1/5 = 0,210 = 0,0011001100110011...2 (tak terbatas)
Dibatasi dengan jumlah bit mantissa tertentu
Misal 12 bit sign/magnitude dan 6 bit eksponen:
0,210 = 0,110011001102 x 2-2 = 0,798828125 x ¼
= 0,19971 (kurang dari 0,2)
“Jangan pernah menguji balik nilai suatu bilangan real !”
22022008 #59
Kesalahan-Kesalahan Floating Point (3)
(4) Kesalahan propagasi (propagation error)
– Terjadi pada operasi aritmatika jika dua bilangan yang
dioperasikan memiliki eksponen yang jauh berbeda
– Langkah-langkah untuk menjumlahkan dua bilangan
real:
1. Samakan eksponen kedua bilangan (penskalaan)
2. Jumlahkan mantissa kedua bilangan
3. Normalisasikan
Contoh 1: 0,123 x 105 + 0,00456 x 106
22022008 #60
Kesalahan-Kesalahan Floating Point (4)
Contoh 2: Penjumlahan +11 dengan +1/4
Jika digunakan 6 bit sign/magnitude untuk mantissa (lima bit ditambah
satu bit tanda), dan 4 bit biased exponent, maka:
sign exp mantissa
+11 = +11/16 x 24 = 0 1100 10110
+1/4 = +1/2 x 2-1 = 0 0111 10000
Samakan eksponennya:
+11/16 x 24 = +11/16 x 24 = 0 1100 10110
+1/2 x 2-1 = +1/64 x 24 = + 0 1100 00000 (0,00000,10000)
(x25) 0 1100 10110 11/16 x 2-4 = +11 !!
(Propagation error)
Solusi:
Memperbanyak bit pada mantissa dan eksponen
mengurangi dampak masalah
22022008 #61
Organisasi Memori Berorientasi Word
32-bit 64-bit Addr.
• Alamat spesifik dari Words Words
Bytes
Memory
lokasi Byte Addr
0000
0001
– Alamat word pertama =
0000
?? 0002
= alamat awal memori Addr
=
0003
(RAM) Addr
0000
?? 0004
0005
– Alamat word =
0004
?? 0006
selanjutnya melompat 0007
4 alamat (32-bit) atau Addr
0008
0009
8 alamat (64-bit) =
0008
?? 0010
Addr
= 0011
0008
?? 0012
Addr
=
0013
0012
?? 0014
0015
22022008 #62
Big Endian dan Little Endian
• Big Endian LSB MSB
– Least significant byte memiliki alamat tertinggi
– Contoh: Sun, Macintosh, Motorola 6800, 68000,
IBM system/360
• Little Endian
– Least significant byte memiliki alamat
MSB terkecil
LSB
22022008 #64
Representasi Integer
Decimal: 15213
Binary: 0011 1011 0110 1101
• int A = 15213; Hex: 3 B 6 D
• int B = -15213; Decimal: -15213
• long int C = 15213; Binary: 1100 0100 1001 0011
3 komputer: Linux, Alpha, dan Sun Hex: C 4 9 3
Linux + Alpha = Little endian; Sun = Big endian
Linux/Alpha A Sun A Linux C Alpha C Sun C
6D 00 6D 6D 00
3B 00 3B 3B 00
00 3B 00 00 3B
00 6D 00 00 6D
00
Linux/Alpha B Sun B 00
00
93 FF
00
C4 FF
FF C4
FF 93 representasi Two’s complement
22022008 #65
Representasi Pointers
Contoh: int B = -15213; int *P = &B; Alpha P
Alpha Address A0
FC
Hex: 1 F F F F F C A 0
FF
Binary: 0001 1111 1111 1111 1111 1111 1100 1010 0000 FF
Sun P 01
00
EF Sun Address 00
FF 00
FB Hex: E F F F F B 2 C
Binary: 1110 1111 1111 1111 1111 1011 0010 Linux P
2C
1100
Linux Address D4
F8
Hex: B F F F F 8 D 4
Binary: 1011 1111 1111 1111 1111 1000 1101 FF
0100 BF
Compilers & mesin yg beda akan merepresentasikan pada lokasi yg beda
22022008 #66
Tipe Data Karakter
Tipe yang dominan :
• ASCII (American Standard Code for Information
Interchange)
standar proses transfer informasi antar komputer
• EBCDIC (Extended Binary-Coded Decimal
Interchange Code)
EBCDIC secara internal, ASCII secara eksternal
22022008 #67
Kode ASCII
Oct Dec Hex Name
000 0 0x00 NUL
001 1 0x01 SOH, Control-A
002 2 0x02 STX, Control-B
003 3 0x03 ETX, Control-C
004 4 0x04 EOT, Control-D
005 5 0x05 ENQ, Control-E
006 6 0x06 ACK, Control-F
007 7 0x07 BEL, Control-G
010 8 0x08 BS, Control-H, backspace
..................
22022008 #68
Table karakter EBCDIC
22022008 #69
Representasi String
• Strings di C:
– Direpresentasikan dengan array of characters
– Setiap karakter di-encoded ke dalam format ASCII
Standard Encoding : 7-bit
Encoding lain ada, tapi tidak biasa char S[6] = "15213";
– String harus diakhiri dengan null Linux/Alpha S Sun S
Karakter akhir = 0
31 31
Karakter “0” memiliki kode 0x30
35 35
Digit i memiliki kode 0x30+i
32 32
• Kompatibiliti 31 31
– Urutan Byte bukan issue 33 33
Data merupakan single byte quantities 00 00
– Text files secara umum platform independent
Kecuali untuk konvensi yang beda
22022008 #70
Penanganan Kesalahan Dengan Paritas (1)
• Mendeteksi kesalahan data pada level bit
• Bit paritas: bit ekstra yang ditambahkan pada suatu
unit data terkecil untuk digunakan dalam proses
pengecekan kebenaran data pada saat penyimpanan
atau proses transmisi
• Bit paritas yang ditambahkan merupakan hasil keluaran
dari suatu fungsi yang menerima masukan berupa
seluruh data pada unit terkecil tersebut
• Jenis paritas: paritas genap (even) & paritas ganjil
(odd)
– Paritas genap:
Menambahkan sebuah bit sehingga total bit ‘1’ suatu word
berjumlah genap
– Paritas ganjil:
Menambahkan sebuah bit sehingga total bit ‘1’ suatu word
berjumlah ganjil
• Mendeteksi maksimal 1 bit error, lokasi tidak diketahui
22022008 #71
Penanganan Kesalahan Dengan Paritas (2)
network /
parity generation error detection
storage
accept
parity'’ =
parity' yes ‘valid’
parity’ ?
data
process for
no
invalid data
Contoh:
Data = 1001001, jenis paritas = paritas genap
22022008 #73
Penanganan Kesalahan Dengan
Hamming Code (2)
• Dapat menentukan posisi dari single-bit error yang terjadi
• Recovery dapat dilakukan dengan meng-inverse bit pada posisi tersebut
• Block (k digit) dikodekan n digit (n > k); dilambangkan dengan (n,k)
• (k/n) = code rate atau code efficiency; 1 - k/n = redundancy
Ilustrasi: Codeword = 7 bit informasi + 4 bit check (pada posisi 2 x) (11,7)
informasi: 1001101
Jumlah bit code: 2K – 1 M+K K = jumlah bit kontrol; M = jumlah bit data
Misal M=7
K = 3: 23–1 7 + 3 (salah)
K = 4: 24–1 7 + 4 (ok)
22022008 #74
Penanganan Kesalahan Dengan
Hamming Code (3)
22022008 #75
Penanganan Kesalahan
• Jarang digunakan dalam konteks
komunikasi data / jaringan komputer,
dimana probabilitas terbesar error yang
terjadi adalah burst error
• Biasanya digunakan kode-kode berbasis
konvolusi
• Dapat digunakan pada aplikasi yang
punya batasan single-bit error, misalnya:
error correcting semiconductor memory
system
22022008 #76
Pustaka
[HTT02] http://en.wikipedia.org/wiki/
[SCH85] Schneider, Michael G. 1985. “The Principle of
Computer Organization”. 1st edition. John Wiley &
Sons. Canada.
[TAN99] Tanenbaum, Andrew S. 1999. “Structured
Computer Organization”. 4th edition. Prentice Hall.