Memahami sistem bilangan, konversi basis, representasi bilangan bertanda, dan operasi logika bitwise.
Capaian Pembelajaran Bab Ini
Setelah mempelajari bab ini, mahasiswa mampu mengkonversi bilangan antar basis (desimal, biner, oktal, heksadesimal), memahami representasi bilangan bertanda (sign-magnitude, 1's complement, 2's complement), dan mengenal representasi BCD dan ASCII.
Komputer dibangun dari miliaran transistor elektronik yang hanya memiliki dua keadaan fisik: Mati (0) dan Nyala (1). Karena keterbatasan hardware ini, semua data (angka, teks, gambar, suara) harus diterjemahkan ke dalam kombinasi angka 0 dan 1 yang disebut bit (binary digit).
0 / 1
1 Bit (Dasar)
4 Bit
1 Nibble (Setengah Byte)
8 Bit
1 Byte (Satu Karakter)
16 Bit
1 Word (Standar 8086)
Peran Heksadesimal (Singkatan Biner)
Meskipun komputer hanya memahami biner, rangkaian seperti 11111111 sangat sulit dibaca dan ditulis oleh manusia. Solusinya adalah menggunakan Heksadesimal (basis 16).
Karena 1 digit heksadesimal merepresentasikan tepat 4 bit biner, manusia bisa membaca data memori dengan jauh lebih ringkas (misalnya menulis FFH alih-alih 11111111). Inilah alasan utama mengapa pemrograman tingkat rendah (seperti Assembly) sangat bergantung pada angka Hex.
3.2 Konversi Basis Bilangan
Kemampuan konversi bilangan adalah keterampilan fundamental yang WAJIB dikuasai sebelum lanjut ke pemrograman Assembly. Tanpa ini, Anda tidak akan bisa membaca maupun menulis kode dengan benar.
Desimal
Biner (8-bit)
Oktal
Heksadesimal
0
00000000
000
00H
5
00000101
005
05H
10
00001010
012
0AH
15
00001111
017
0FH
16
00010000
020
10H
32
00100000
040
20H
50
00110010
062
32H
100
01100100
144
64H
255
11111111
377
FFH
1
Desimal ↔ Biner
Desimal ke Biner (Metode Bagi 2)
Bagi bilangan desimal dengan 2 berulang kali. Catat sisa pembagian di setiap langkah. Hasil biner dibaca dari bawah ke atas.
25 : 2 = 12sisa 1
12 : 2 = 6sisa 0
6 : 2 = 3sisa 0
3 : 2 = 1sisa 1
1 : 2 = 0sisa 1
Baca dari bawah: 11001
Biner ke Desimal (Metode Posisi)
Kalikan setiap bit dengan pangkat 2 sesuai posisinya (dari kanan ke kiri, dimulai dari pangkat 0). Jumlahkan semua hasilnya.
1
1
0
0
1
2⁴
2³
2²
2¹
2⁰
(1×16) + (1×8) + (0×4) + (0×2) + (1×1)
16 + 8 + 0 + 0 + 1 = 25
2
Biner ↔ Oktal
Oktal (basis 8) sangat erat kaitannya dengan biner karena 1 digit oktal tepat merepresentasikan 3 bit biner.
Biner ke Oktal
Kelompokkan bit biner dari kanan ke kiri, masing-masing berisi 3 bit. Jika bit paling kiri kurang dari 3, tambahkan 0 di depannya. Lalu ubah tiap kelompok menjadi angka oktal.
011
001
010
3
1
2
Hasil: 312 (Oktal)
Oktal ke Biner
Ubah setiap digit oktal menjadi 3 bit biner. Jika hasilnya kurang dari 3 digit, tambahkan leading zero di depannya.
3
1
2
011
001
010
Hasil: 011001010 (Biner)
3
Biner ↔ Heksadesimal
Heksadesimal (basis 16) adalah yang paling sering digunakan. Alasannya karena 1 digit hex tepat merepresentasikan 4 bit biner (setengah byte / nibble).
Biner ke Heksadesimal
Kelompokkan bit biner dari kanan ke kiri, masing-masing berisi 4 bit. Tambahkan 0 di depan jika kurang. Lalu ubah tiap kelompok ke hex.
1010
1111
1100
A
F
C
Hasil: AFCH
Heksadesimal ke Biner
Ubah setiap digit hex menjadi 4 bit biner. Ini yang membuat hex sangat mudah dibaca manusia dibandingkan membaca deretan 0 dan 1 panjang.
B
5
9
1011
0101
1001
Hasil: 101101011001 (Biner)
Tabel Referensi Cepat: Biner ke Hex/Oktal
Desimal
Biner (4-bit)
Heksadesimal
Desimal
Biner (3-bit)
Oktal
0
0000
0H
0
000
0
1
0001
1H
1
001
1
2
0010
2H
2
010
2
3
0011
3H
3
011
3
4
0100
4H
4
100
4
5
0101
5H
5
101
5
6
0110
6H
6
110
6
7
0111
7H
7
111
7
8
1000
8H
— (Maks digit Oktal adalah 7) —
9
1001
9H
10
1010
AH
11
1011
BH
12
1100
CH
13
1101
DH
14
1110
EH
15
1111
FH
3.3 Operasi Aritmatika Biner
Operasi aritmatika biner lebih sederhana daripada desimal karena hanya ada beberapa aturan dasar:
Penjumlahan
0 + 0 = 0 (carry = 0)
0 + 1 = 1 (carry = 0)
1 + 0 = 1 (carry = 0)
1 + 1 = 10 (carry = 1)
1 + 1 + 1 = 11 (carry = 1)
Pengurangan
0 - 0 = 0 (borrow = 0)
1 - 0 = 1 (borrow = 0)
1 - 1 = 0 (borrow = 0)
0 - 1 = 1 (borrow = 1)
Instruksi
Keterangan
Flag yang Terpengaruh
ADD dst, src
Penjumlahan (dst = dst + src)
CF, ZF, OF, PF, AF, SF
SUB dst, src
Pengurangan (dst = dst - src)
CF, ZF, OF, PF, AF, SF
INC op
Tambah 1 ke operand (dst = dst + 1)
ZF, SF, OF, AF, PF (tidak mempengaruhi CF)
DEC op
Kurangi 1 dari operand (dst = dst - 1)
ZF, SF, OF, AF, PF (tidak mempengaruhi CF)
NEG op
Membuat negatif (Two's complement)
CF=1 (kecuali op=0), ZF, OF, SF, AF
CMP op1, op2
Subtract tanpa menyimpan hasil (op1 - op2)
CF, ZF, SF, OF, PF, AF
3.4 Bilangan Bertanda
Dalam kehidupan nyata, angka bisa negatif. Prosesor menyediakan 3 metode untuk merepresentasikan bilangan negatif:
Sign-Magnitude
Bit paling tinggi = tanda (0 positif, 1 negatif). Masalah: ada DUA representasi untuk nol (+0 dan -0). Hampir tidak pernah dipakai di prosesor modern.
1's Complement
Semua bit dibalik (0 jadi 1, 1 jadi 0). Masih ada dua representasi nol. Hampir tidak dipakai di prosesor modern.
2's Complement
Bit dibalik, ditambah 1. Hanya SATU representasi nol. Inilah standar yang digunakan di semua prosesor modern.
Aspek
Sign-Magnitude
1's Complement
2's Complement
Representasi nol
Dua (+0 dan -0)
Dua (berbeda bit)
Hanya satu
Positif
0
0
0
Negatif
1
1
1
Implementasi hardware
Rangkaian kompleks
Perlu inverter
Inverter + Adder (efisien)
Digunakan di prosesor modern
Tidak
Tidak
Ya (Standar)
Contoh: -57 dalam 8-bit
Desimal
+57
Biner Asli
0011 1001
Dibalik (1's Comp)
1100 0110
Ditambah 1 (2's Comp)
1100 0111
Gambar 3.1: Proses mendapatkan -57 (C7H) dalam 2's complement
Tiga metode ini menjawab pertanyaan: "bagaimana menyimpan angka negatif di memori yang hanya mengenal 0 dan 1?" Berikut perbandingan mendetail.
2's Complement 16-bit (seperti prosesor 8086)
Pada 8086 (16-bit), range signed = -32768 sampai +32767. Nilai -32768 direpresentasikan sebagai 1000 0000 0000 0000 (8000H). Angka positif +32768 tidak bisa direpresentasikan karena melebihi batas maksimum.
Kelebihan 2's Complement
- Setiap angka punya SATU representasi nol.
- Penjumlahan dan pengurangan menggunakan rangkaian hardware yang sama (Adder).
- Tidak perlu memeriksa tanda bit sebelum menghitung.
Kelemahan 2's Complement
- Rentang angka tidak simetris (contoh 8-bit: -128 hingga +127).
- Proses konversi memerlukan 2 langkah (balik bit, lalu tambah 1).
Contoh Perhitungan 1's Complement (-5 dalam 8-bit)
Angka asli (+5): 0000 0101
Langkah 1 - Balik: 1111 1010 (Ini adalah -5 dalam 1's complement = FAH)
3.6 Representasi BCD dan ASCII
BCD (Binary Coded Decimal)
Setiap digit desimal disimpan dalam 4 bit. Digunakan saat data langsung ditampilkan ke manusia (display 7-segment, LCD). BCD sangat penting di sistem yang tidak memiliki prosesor floating-point.
1000
1001
89 desimal = 1000 1001 dalam BCD
ASCII (American Standard Code for Information Interchange)
Setiap karakter memiliki kode numerik unik. Kode 0-31 adalah karakter kontrol (tidak bisa dicetak). Kode 32-127 adalah karakter standar (spasi, angka 0-9, huruf besar A-Z, huruf kecil a-z). Kode 128-255 adalah kode extended untuk simbol dan bahasa asing.
Hex
Desimal
Karakter
Kategori
20H
32
(Spasi)
Spasi
30H - 39H
48 - 57
0 - 9
Digit Angka
41H - 5AH
65 - 90
A - Z
Huruf Besar
61H - 7AH
97 - 122
a - z
Huruf Kecil
00H
0
NUL
Kontrol (Akhir string di C)
Kenapa ASCII awalnya 7-bit? Komputer awal menggunakan 8-bit, tetapi 1 bit paling atas digunakan sebagai parity bit untuk pengecekan error saat pengiriman data. Extended ASCII (128-255) kemudian ditambahkan saat kebutuhan simbol semakin banyak.
3.7 Soal Latihan
Kerjakan soal-soal berikut untuk menguji pemahaman Anda.
Soal 1. Konversikan 255 desimal ke biner dan heksadesimal.
▶ Lihat jawaban
255 desimal = 1111 1111 biner = FFH heksadesimal. Cara: bagi terus 2 dan catat sisa (dari bawah), lalu baca dari bawah ke atas.
Soal 2. Apa perbedaan Sign-Magnitude, 1's Complement, dan 2's complement? Kapan masing-masing digunakan?
▶ Lihat jawaban
Sign-Magnitude: Bit paling tinggi = tanda (0 positif, 1 negatif). Masalah: ada dua representasi untuk nol (+0 dan -0). 1's Complement: Semua bit dibalik (0 jadi 1, 1 jadi 0). Masalah: juga ada dua representasi nol. 2's Complement: Bit dibalik (seperti 1's complement), lalu ditambahkan 1. Hanya SATU representasi nol. Ini standar yang digunakan di semua prosesor modern karena sederhana dan konsisten.
Soal 3. Hitung 2's complement dari -57 (desimal) dalam 8-bit.
Soal 4. Apa kelebihan BCD dibandingkan biner biasa untuk sistem tampilan (misal 7-segment)?
▶ Lihat jawaban
Dengan BCD, setiap digit desimal disimpan dalam 4 bit. Ini menyederhanakan konversi ke 7-segment karena setiap digit bisa ditampilkan secara independen. Dengan biner, seluruh bilangan harus dikonversi ke desimal dulu sebelum ditampilkan.
Soal 5. Huruf besar 'A' dan huruf kecil 'a' memiliki kode ASCII yang berbeda. Berapa kode ASCII masing-masing?
▶ Lihat jawaban
'A' = 41H (65 desimal). 'a' = 61H (97 desimal). Selisihnya 32 karena huruf kecil berada 32 posisi setelah huruf besar di tabel ASCII.
-128 = 1000 0000 (80H). Ini adalah kasus khusus: 1000 0000 dibalik = 0111 1111, +1 = 1000 0000. Nilainya tetap sama karena -128 tidak memiliki pasangan positif di 8-bit.
6. Apa itu BCD dan kapan digunakan?
BCD (Binary Coded Decimal): setiap digit desimal disimpan dalam 4 bit. Digunakan saat data langsung ditampilkan ke manusia (display 7-segmen). Contoh: angka 59 disimpan sebagai 0101 1001.
7. Hasil AND 10101010 dan 11001100 adalah...
10101010 AND 11001100 = 10001000 = 88H (136 desimal). AND menghasilkan 1 hanya jika kedua bit bernilai 1.
8. Hasil XOR 10101010 dan 11001100 adalah...
10101010 XOR 11001100 = 01100110 = 66H (102 desimal). XOR menghasilkan 1 hanya jika kedua bit berbeda.