Apa itu komplemen dua?
Komplemen dua adalah cara standar komputer menyimpan bilangan bulat bertanda — angka yang dapat positif atau negatif — menggunakan jumlah bit tetap. Alih-alih menyisihkan simbol terpisah untuk tanda minus, angka negatif dikodekan sedemikian rupa sehingga penjumlahan biner biasa langsung berfungsi, tanpa penanganan khusus untuk tandanya. Hampir setiap CPU modern merepresentasikan bilangan bulat dengan cara ini.
Kalkulator ini mengambil bilangan bulat desimal dan lebar bit (8, 16, atau 32 bit) serta menampilkan pola komplemen dua-nya dalam biner maupun heksadesimal.
Bagaimana cara kerjanya?
Untuk lebar terpilih sebesar bit, setiap nilai disimpan sebagai pola bit tak bertanda:
- Jika angka non-negatif, polanya cukup berupa biner dari , diberi bantalan nol di depan hingga bit.
- Jika angka negatif, polanya adalah biner dari .
Karena negatif dalam kasus kedua, adalah nilai positif yang lebih kecil dari , sehingga selalu muat dalam bit. Bit paling signifikan (paling kiri) akhirnya bernilai untuk setiap angka negatif dan untuk setiap angka non-negatif — bit itu berperan sebagai tanda.
Rumus
Hasilnya kemudian ditulis dengan tepat digit biner (atau digit heksadesimal).
Contoh terselesaikan
Contoh 1: angka positif
Kodekan dalam bit. Karena , polanya cukup dalam biner, diberi bantalan hingga delapan digit:
Contoh 2: negatif satu
Kodekan dalam bit. Karena , hitung :
Negatif satu selalu berupa deretan satu yang tak terputus, berapa pun lebarnya.
Contoh 3: negatif lima
Kodekan dalam bit. Hitung :
Tabel referensi (8-bit)
| Desimal | Biner komplemen dua | Heks |
|---|---|---|
| 5 | 00000101 | 0x05 |
| 0 | 00000000 | 0x00 |
| -1 | 11111111 | 0xFF |
| -5 | 11111011 | 0xFB |
| 127 | 01111111 | 0x7F |
| -128 | 10000000 | 0x80 |
Catatan
- Bilangan bulat bertanda -bit mencakup rentang hingga ; bit mencakup hingga ; bit mencakup kira-kira miliar. Nilai di luar rentang terpilih membungkus (wrap) modulo .
- Bit terdepan adalah tanda: menandai angka non-negatif dan menandai angka negatif.
- Untuk mengonversi angka non-negatif biasa ke biner tanpa bit tanda, gunakan konverter desimal ke biner, atau konverter sistem bilangan umum untuk basis lainnya.
FAQ
Berapa -1 dalam komplemen dua?
Dalam lebar apa pun ia adalah semua satu: (0xFF) untuk 8 bit, (0xFFFF) untuk 16 bit, dan seterusnya.
Bagaimana cara mendapatkan komplemen dua dari angka negatif secara manual?
Tulis besaran angka dalam biner, balikkan setiap bit, lalu tambahkan satu. Untuk dalam 8 bit: adalah , membaliknya menghasilkan , dan menambahkan satu menghasilkan — hasil yang sama dengan .
Mengapa lebar bit penting?
Lebar menetapkan berapa banyak bit yang ditempati pola dan karenanya rentang angka yang dapat Anda simpan. Nilai desimal yang sama menghasilkan deretan nol atau satu di depan yang lebih panjang seiring bertambahnya lebar.