Aritmatika biner dan bilangan bulat bertanda
| English | Bahasa Indonesia |
|---|---|
| overflow/ˌəʊvəˈfləʊ/ | overflow |
| two's complement/tuːz ˈkɒmplɪmənt/ | komplemen dua |
| register/ˈredʒɪstə/ | register |
| sign bit/saɪn bɪt/ | bit tanda |
| most significant bit/məʊst sɪɡˈnɪfɪkənt bɪt/ | bit paling signifikan |
| one's complement/wʌnz ˈkɒmplɪmənt/ | komplemen satu |
| Binary Coded Decimal/ˈbaɪnəri ˈkəʊdɪd ˈdesɪml/ | Desimal Kode Binari |
Bank yang Kehilangan Satu Hari
- Pada 1 September 1983 indeks Bursa Saham Vancouver berada di 524.811. Ia dibuka di 1000 dua puluh dua bulan sebelumnya, dan pasar telah naik sepanjang waktu itu.
- Program menghitung ulang indeks setelah setiap transaksi, membulatkan ke bawah alih-alih pembulatan biasa setiap saat. Setiap pemotongan kehilangan sebagian kecil poin. Tiga ribu transaksi sehari menyelesaikan sisanya.
- Ketika dihitung ulang dengan benar, indeksnya adalah 1098.892: aritmatika, bukan pasar, yang setengahkannya.
- Aritmatika pada jumlah bit tetap bukanlah aritmatika yang Anda pelajari di sekolah. Pelajaran ini meliputi penjumlahan biner, overflow, pengurangan melalui komplemen dua, bilangan bulat bertanda, dan BCD.
Penjumlahan Biner
- Jumlahkan kolom per kolom dari kanan, membawa ke kolom berikutnya, persis seperti dalam desimal.
- Aturannya: $0 + 0 = 0$; $0 + 1 = 1$; $1 + 1 = 10$, tulis 0 dan bawa 1; $1 + 1 + 1 = 11$, tulis 1 dan bawa 1.
0101$+$0011$=$1000, yaitu $5 + 3 = 8$.

Metode yang sama dengan desimal, hanya ada dua digit untuk dibawa antar kolom
Biner & bilangan bulat bertanda
byte = Σ nilai tempat
Lihat bagaimana pola 8-bit memetakan ke angka (dan bagaimana cara melampaui 255).
Jumlahkan bilangan biner 0101 + 0011. Berikan hasil 4-bit.
$5 + 3 = 8$, yang merupakan 1000 dalam biner.
Overflow
- Overflow terjadi ketika hasil perhitungan membutuhkan lebih banyak bit daripada yang dapat ditampung oleh register. Pembawa keluar dari kolom paling signifikan hilang, sehingga jawaban yang disimpan salah.
- Ini adalah sifat dari lebar register, bukan dari angka 255: dalam register 16-bit, jumlah yang sama tetap aman.
- Dalam aritmatika bertanda, tanda utamanya adalah bit tanda yang berbalik secara salah: dua positif menghasilkan negatif, atau dua negatif menghasilkan positif.
Overflow dalam penjumlahan biner berarti:
Overflow terjadi ketika jumlah terlalu besar untuk muat dalam bit yang tersedia; carry keluar dari kolom paling kiri hilang.
Contoh Terpecahkan: sebut overflow dengan benar
- Jumlahkan bilangan bulat tak bertanda 8-bit
10110101dan01101100serta beri komentar mengenai hasilnya. - Hasilnya adalah
1 0010 0001, yang membutuhkan 9 bit. Hasil sebenarnya adalah 289. - Jawaban lengkap: overflow telah terjadi, karena 289 lebih besar daripada nilai maksimum yang dapat ditampung register 8-bit, yaitu 255; pembawa keluar dari bit paling signifikan hilang, sehingga hasil yang disimpan
0010 0001bernilai 33, yang mana itu salah. - Nilai diberikan untuk menyebut lebar register dan menyatakan bahwa hasilnya tidak dapat direpresentasikan di dalamnya. "Hasilnya lebih dari 255" saja tidak memberikan nilai penuh.
Dua bilangan bulat tak-tertanda 8-bit dijumlahkan dan hasilnya membutuhkan 9 bit. Manakah penjelasan skor penuh?
Sebutkan lebar register, katakan bahwa hasil tidak dapat direpresentasikan di dalamnya, dan jelaskan apa yang terjadi pada carry. Opsi lain menyatakan gejala tanpa penyebabnya.
Pengurangan dengan Komplemen Dua
- Untuk menghitung $A - B$: buatlah komplemen dua dari $B$ dengan membalikkan setiap bit dan menambahkan 1, tambahkan ke $A$, lalu buang pembawa keluar akhir apa pun.
- $100 - 30$ dalam 8 bit: komplemen dua dari
0001 1110adalah1110 0001dibalik, ditambah 1, sehingga1110 0010. 0110 0100$+$1110 0010$=$1 0100 0110; buang 1 terdepan dan baca0100 0110$= 70$. ✓

Pengurangan menjadi penjumlahan, itulah sebabnya prosesor tidak memerlukan pengurang
Apa dua komplemen 4-bit dari 0011? (balik, lalu tambah 1)
Balik 0011 → 1100, lalu tambah 1 → 1101 (yang merepresentasikan $-3$).
Susun langkah-langkah mengurangkan B dari A dengan dua komplemen secara berurutan.
Balik, tambah satu, tambahkan, buang. Pembuangan inilah yang menjaga jawaban tetap dalam lebar register.
Bilangan Bulat Bertanda Komplemen Dua
- Dalam bilangan komplemen dua $n$-bit, bit paling signifikan adalah bit tanda: 0 berarti positif, 1 berarti negatif. Setara, bit teratas memiliki nilai tempat negatif, $-2^{n-1}$.
- Untuk membaca bilangan negatif: balik setiap bit, tambah 1, lalu letakkan tanda minus di depannya.
1011 0100dibalik menjadi0100 1011, ditambah 1 menjadi0100 1100$= 76$, sehingga nilainya adalah $-76$. Periksa dengan nilai tempat: $-128 + 32 + 16 + 4 = -76$. ✓ - Untuk $n$ bit, rentangnya adalah $-2^{n-1}$ hingga $+2^{n-1} - 1$: 8 bit memberikan $-128$ hingga $+127$, 12 bit memberikan $-2048$ hingga $+2047$. Nilai paling negatif adalah 1 diikuti nol; nilai paling positif adalah 0 diikuti satu.

11111111 adalah 255 jika dibaca satu cara dan −1 jika dibaca cara lain
Bit bertanda dua komplemen
Bit paling kiri memiliki nilai tempat negatif. Balik setiap bit — atau tekan Negate (balik setiap bit, lalu tambah 1) — dan lihat perubahan nilai bertandanya.
Baca bilangan dua komplemen 8-bit 11111101 sebagai nilai denary bertanda.
MSB adalah 1 (negatif). Balik → 00000010, tambah 1 → 00000011 $= 3$, sehingga nilainya adalah $-3$.
Apa nilai positif terbesar yang dapat ditampung bilangan dua komplemen 8-bit?
Rentangnya $-2^{7}$ hingga $2^{7}-1$, yaitu $-128$ hingga $+127$. Maksimumnya adalah 01111111 = 127.
Contoh Terpecahkan: tulis −108 dalam 12 bit
- Mulai dari $+108$ dalam 12 bit: $108 = 64 + 32 + 8 + 4$, sehingga
0000 0110 1100. - Balik setiap bit:
1111 1001 0011. Tambah 1:1111 1001 0100. - Periksa dengan nilai tempat, di mana bit teratas bernilai $-2048$: $-2048 + 1024 + 512 + 256 + 128 + 16 + 4 = -108$. ✓
- Kesalahan yang paling umum adalah tanda dan besaran: mengatur bit teratas menjadi 1 dan membiarkan sisanya. Itu adalah skema berbeda, yang lebih tua, dan tidak memberikan nilai di sini.
Tulis −108 sebagai bilangan dua komplemen 12-bit (spasi diperbolehkan).
+108 adalah 0000 0110 1100; balik menjadi 1111 1001 0011 dan tambah 1. Cek: −2048 + 1024 + 512 + 256 + 128 + 16 + 4 = −108.
Komplemen Satu
- Komplemen satu adalah skema yang lebih lama: bilangan negatif dibuat dengan membalik setiap bit dari bilangan positif, tanpa langkah tambah-1. $+30$ adalah
0001 1110, sehingga $-30$ adalah1110 0001. - Kekurangannya adalah dua nol,
0000 0000dan1111 1111, yang membuang pola bit dan memperumit aritmatika. - Komplemen dua memiliki satu nol dan memungkinkan rangkaian penjumlahan yang sama melakukan pengurangan, itulah sebabnya ia menang.
Satu komplemen lebih disukai daripada dua komplemen karena hanya memiliki satu representasi nol.
Sebaliknya: satu komplemen memiliki dua nol, +0 dan −0. Dua komplemen memiliki satu, dan memungkinkan adder melakukan pengurangan.
Desimal Terkode Biner
- Dalam Desimal Terkode Biner (BCD), setiap digit desimal disimpan sebagai polanya sendiri 4-bit, menggunakan hanya
0000hingga1001. - 93 dalam BCD adalah
1001 0011, yang bukan sama dengan 93 dalam biner murni,0101 1101. Membaca satu sebagai yang lain adalah jebakan ujian favorit. - Penggunaan: kalkulator, jam digital dan tampilan tujuh-segmen, di mana setiap digit digerakkan secara terpisah, dan mata uang, di mana BCD menghindari kesalahan pembulatan dari menyimpan $0.1$ dalam biner murni. Biayanya adalah pola yang terbuang, karena
1010hingga1111tidak pernah digunakan.

Satu digit, satu nibble, satu tampilan
Tulis digit denary $9$ sebagai pola BCD 4-bit.
$9$ adalah 1001. Dalam BCD setiap digit denary mendapatkan nibble sendiri (0000–1001).
Cocokkan setiap pola bit dengan apa yang diwakilinya.
Tidak ada dalam bit yang menunjukkan cara membacanya. Representasi yang disepakati yang menentukan nilainya.
⟦⟧ Nilai yang sering terlewat
- Jelaskan overflow (kelebihan) menggunakan lebar register yang diberikan soal, bukan dengan "lebih dari 255".
- Untuk menegatifkan, balikkan bit dan tambahkan 1. Mengatur bit atas menjadi 1 adalah sistem tanda dan nilai mutlak (sign and magnitude), skema yang berbeda.
- Pengurangan dua komplemen (two's complement) diakhiri dengan mengabaikan hasil carry keluar terakhir. Menahannya akan menghasilkan jawaban sembilan bit.
- BCD menyimpan setiap digit secara terpisah; biner murni menyimpan seluruh angka.
1001 0011adalah 93 dalam BCD dan 147 dalam biner.
Anda telah memahaminya
- Tambahkan kolom demi kolom dengan carry; overflow adalah hasil yang membutuhkan lebih banyak bit daripada yang dapat ditampung register, dan jawaban menyebutkan lebar tersebut
- Kurangkan dengan menambahkan dua komplemen, balikkan bit dan tambahkan 1, lalu abaikan carry keluar terakhir
- Bersign: MSB adalah bit tanda dan membawa $-2^{n-1}$; rentang $-2^{n-1}$ hingga $+2^{n-1}-1$; baca negatif dengan membalikkan, menambah 1, lalu menegatkan
- Satu komplemen (one's complement) hanya membalikkan dan memiliki dua nol; BCD menyimpan setiap digit desimal dalam nibble-nya sendiri, untuk jam, kalkulator, dan mata uang