Konversi

Kalkulator komplemen dua

Pengaturan
Atur ulang
Bagikan hasil
Simpan
Sematkan
Laporkan bug

Bagikan kalkulator

Tambahkan kalkulator gratis kami ke situs web Anda

Sumber

Harap masukkan URL yang valid. Hanya URL HTTPS yang didukung.

Gaya

Warna fokus pinggiran input, warna kotak switch yang dicentang, warna hover item yang dipilih dll.

Lanjutan

Harap setujui Syarat Penggunaan.

Prévisualisation

Simpan kalkulator

Pengaturan Kalkulator

Harap masukkan nilai dalam rentang yang diperbolehkan.

Harap masukkan nilai dalam rentang yang diperbolehkan.

Harap masukkan nilai dalam rentang yang diperbolehkan.

Harap masukkan nilai dalam rentang yang diperbolehkan.

Bagikan kalkulator

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 ww bit, setiap nilai disimpan sebagai pola bit tak bertanda:

  • Jika angka nn non-negatif, polanya cukup berupa biner dari nn, diberi bantalan nol di depan hingga ww bit.
  • Jika angka nn negatif, polanya adalah biner dari 2w+n2^w + n.

Karena nn negatif dalam kasus kedua, 2w+n2^w + n adalah nilai positif yang lebih kecil dari 2w2^w, sehingga selalu muat dalam ww bit. Bit paling signifikan (paling kiri) akhirnya bernilai 11 untuk setiap angka negatif dan 00 untuk setiap angka non-negatif — bit itu berperan sebagai tanda.

Rumus

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

Hasilnya kemudian ditulis dengan tepat ww digit biner (atau w/4w/4 digit heksadesimal).

Contoh terselesaikan

Contoh 1: angka positif

Kodekan n=5n = 5 dalam 88 bit. Karena 505 \ge 0, polanya cukup 55 dalam biner, diberi bantalan hingga delapan digit:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Contoh 2: negatif satu

Kodekan n=1n = -1 dalam 88 bit. Karena 1<0-1 < 0, hitung 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Negatif satu selalu berupa deretan satu yang tak terputus, berapa pun lebarnya.

Contoh 3: negatif lima

Kodekan n=5n = -5 dalam 88 bit. Hitung 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tabel referensi (8-bit)

DesimalBiner komplemen duaHeks
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Catatan

  • Bilangan bulat bertanda 88-bit mencakup rentang 128-128 hingga 127127; 1616 bit mencakup 32,768-32{,}768 hingga 32,76732{,}767; 3232 bit mencakup kira-kira ±2.1\pm 2.1 miliar. Nilai di luar rentang terpilih membungkus (wrap) modulo 2w2^w.
  • Bit terdepan adalah tanda: 00 menandai angka non-negatif dan 11 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: 11111111211111111_2 (0xFF) untuk 8 bit, 111111111111111121111111111111111_2 (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 5-5 dalam 8 bit: 55 adalah 0000010100000101, membaliknya menghasilkan 1111101011111010, dan menambahkan satu menghasilkan 1111101111111011 — hasil yang sama dengan 2565=251256 - 5 = 251.

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.

Laporkan bug

Bidang ini wajib diisi.