BCD dan Gray Code
Pengkodean Biner Khusus
Pelajari Kode KhususTidak semua representasi biner adalah basis 2 murni. BCD (Binary-Coded Decimal) dan Gray code adalah pengkodean khusus yang memecahkan masalah spesifik dalam sistem digital—dari menampilkan angka di kalkulator hingga membaca rotary encoder tanpa kesalahan.
Binary-Coded Decimal (BCD)
Apa Itu BCD?
BCD merepresentasikan setiap digit desimal sebagai angka biner 4-bit:
| Desimal | BCD | Biner Murni |
|---|---|---|
| 0 | 0000 | 0000 |
| 5 | 0101 | 0101 |
| 9 | 1001 | 1001 |
| 10 | 0001 0000 | 1010 |
| 42 | 0100 0010 | 101010 |
| 99 | 1001 1001 | 1100011 |
Perbedaan Utama
BCD menggunakan 4 bit per digit desimal; biner murni lebih kompak tetapi lebih sulit ditampilkan.
Mengapa Menggunakan BCD?
Tampilan Desimal Mudah
- Setiap kelompok 4-bit → satu digit pada display 7-segment
- Tidak perlu konversi biner-ke-desimal yang kompleks
- Kalkulator dan meter menggunakan ini
Nilai Desimal Tepat
- Perhitungan keuangan memerlukan desimal tepat
- 0,10 tepat dalam BCD, mendekati dalam floating-point biner
- Menghindari kesalahan pembulatan dalam mata uang
Penyimpanan yang Mudah Dibaca Manusia
- Timestamp sering disimpan dalam BCD
- Mudah dibaca dalam hex dump
- BIOS real-time clock menggunakan BCD
Aritmetika BCD
Tantangan Penjumlahan
Penjumlahan BCD perlu penyesuaian ketika hasil > 9:
- 0101 + 0100 = 1001 (5 + 4 = 9) ✓ BCD valid
- 0111 + 0101 = 1100 (7 + 5 = 12) ✗ BCD tidak valid
- Harus menambahkan 6 (0110) untuk koreksi: 1100 + 0110 = 0001 0010 = 12
Mengapa Menambah 6?
BCD hanya menggunakan nilai 0000-1001 (0-9). Nilai 1010-1111 (10-15) tidak valid. Menambah 6 menghasilkan carry ke digit berikutnya.
Varian BCD
Packed BCD
- Dua digit per byte
- Penyimpanan lebih efisien
- Contoh: 42 = 0100 0010 dalam satu byte
Unpacked BCD
- Satu digit per byte (4 bit atas tidak digunakan/nol)
- Pemrosesan lebih mudah
- Contoh: 42 = 00000100 00000010 (dua byte)
Excess-3 BCD
- Tambahkan 3 ke setiap digit sebelum dikodekan
- Menyederhanakan beberapa sirkuit aritmetika
- 0 = 0011, 9 = 1100
Gray Code
Apa Itu Gray Code?
Gray code adalah urutan biner di mana hanya satu bit yang berubah antara nilai berurutan:
| Desimal | Biner | Gray Code |
|---|---|---|
| 0 | 0000 | 0000 |
| 1 | 0001 | 0001 |
| 2 | 0010 | 0011 |
| 3 | 0011 | 0010 |
| 4 | 0100 | 0110 |
| 5 | 0101 | 0111 |
| 6 | 0110 | 0101 |
| 7 | 0111 | 0100 |
Mengapa Gray Code Penting
Masalah yang Dipecahkan Gray Code
Dalam biner biasa, berpindah dari 7 (0111) ke 8 (1000) mengubah 4 bit secara bersamaan.
- Jika sensor tidak beralih pada saat yang tepat sama
- Pembacaan palsu sesaat terjadi
- Bisa membaca 0000, 0001, 0011, 0111, atau 1111 sebentar
Solusi Gray Code
- Hanya satu bit berubah pada satu waktu
- Tidak ada status antara yang ambigu
- Penting untuk position encoder
Aplikasi Gray Code
Rotary Encoder
- Sensor posisi motor
- Knob volume (digital)
- Sudut sendi robotika
- Positioning mesin CNC
Minimalisasi Kesalahan
- Konversi analog-ke-digital
- Algoritma genetika (crossover)
- Karnaugh map (minimalisasi logika)
Komunikasi
- Beberapa kode koreksi kesalahan
- Skema modulasi tertentu
Mengonversi Biner ke Gray Code
Metode
- Pertahankan bit paling signifikan (MSB) tetap sama
- XOR setiap bit dengan bit di sebelah kirinya
Contoh: Konversi 1011 (biner) ke Gray
- MSB: 1 (pertahankan)
- 1 XOR 0 = 1
- 0 XOR 1 = 1
- 1 XOR 1 = 0
- Hasil: 1110 (Gray)
Rumus
Gray[i] = Binary[i] XOR Binary[i+1]
Gray[MSB] = Binary[MSB]
Mengonversi Gray Code ke Biner
Metode
- Pertahankan MSB tetap sama
- XOR setiap bit Gray dengan bit Biner sebelumnya
Contoh: Konversi 1110 (Gray) ke Biner
- MSB: 1 (pertahankan)
- 1 XOR 1 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- Hasil: 1011 (biner)
Kesimpulan
BCD dan Gray code adalah pengkodean biner khusus yang memecahkan masalah spesifik. BCD menyederhanakan tampilan desimal dan memastikan aritmetika desimal tepat—penting untuk kalkulator dan sistem keuangan. Gray code memastikan hanya satu bit berubah antara nilai berurutan—penting untuk position encoder dan pencegahan kesalahan. Meskipun keduanya tidak seumum biner murni, memahami mereka mengungkapkan bagaimana representasi angka berbeda melayani kebutuhan teknik yang berbeda.