UTILS.
100% di peramban
🔢

Konverter Two's Complement

Konversi bilangan bulat bertanda ke/dari biner dan hex two's-complement pada lebar 4, 8, 16, 32, atau 64-bit, dengan one's complement dan interpretasi unsigned.

Masukkan angka atau pola bit di atas.

Tentang alat ini

Konverter Two's Complement mengenkode bilangan bulat bertanda menjadi representasi biner dan heksadesimal two's-complement pada lebar bit yang Anda pilih (4, 8, 16, 32, atau 64 bit), dan mendekode pola biner atau hex kembali menjadi nilai bertanda yang direpresentasikannya. Alat ini menggunakan BigInt secara menyeluruh, sehingga nilai 64-bit ditangani secara eksak tanpa kehilangan presisi.

Untuk lebar N bit rentang bertanda adalah −2^(N−1) hingga 2^(N−1)−1. Untuk mengenkode desimal d: jika d non-negatif polanya cukup d; jika d negatif polanya adalah 2^N + d (setara, balikkan semua bit dari |d| dan tambah 1). Alat ini mengeluarkan biner N-bit berpadding nol, hex N/4-digit, one's complement (NOT bitwise), dan interpretasi unsigned dari bit yang sama, serta menandai galat overflow ketika sebuah nilai tidak muat pada lebar yang dipilih.

Untuk mendekode, tempel pola biner atau hex dan alat ini membaca bit teratasnya: jika bit paling signifikan diset, nilainya adalah pattern − 2^N (negatif), jika tidak nilainya adalah pola itu sendiri. Alat ini selalu menampilkan pembacaan bertanda dan unsigned berdampingan, yang persis merupakan ambiguitas yang diselesaikan two's complement pada tingkat perangkat keras. Semua komputasi bersifat lokal di browser Anda.

Pertanyaan yang sering diajukan

Berapa rentang untuk setiap lebar bit?
Lebar N bit merepresentasikan nilai bertanda dari −2^(N−1) hingga 2^(N−1)−1. Jadi 8-bit menjangkau −128 hingga 127, 16-bit −32768 hingga 32767, dan 32-bit sekitar ±2.1 miliar. Nilai di luar rentang memicu peringatan overflow.
Bagaimana angka negatif dienkode?
Ambil magnitudonya, balikkan setiap bit (one's complement), dan tambah 1. Setara, polanya sama dengan 2^N ditambah angka negatif itu. Misalnya −1 dalam 8 bit adalah 11111111, dan −42 adalah 11010110.
Mengapa menampilkan nilai unsigned juga?
Pola bit yang sama memiliki dua pembacaan: bertanda (two's complement) dan unsigned. Menampilkan keduanya memperjelas bahwa, misalnya, pola 8-bit 11111111 adalah −1 bertanda tetapi 255 unsigned — interpretasinya bergantung pada bagaimana perangkat keras memperlakukannya.
Bisakah menangani nilai 64-bit secara eksak?
Ya. Konverter menggunakan aritmetika BigInt presisi arbitrer, jadi pola 64-bit dan nilai bertandanya dihitung secara eksak tanpa pembulatan yang akan diperkenalkan angka JavaScript biasa di atas 2^53.

Alat lainnya