MCP ile bağlan →

Hesaplamaya Girin

Formül

Reklam

Sonuç

Two's Complement Binary (8-bit)
11111011
saklanan bit dizisi
İşaretsiz saklanan değer 251
İşaretli yorum -5
İkiye tümleyen (negatif) 5

İkiye Tümleyen Hesaplama Aracı Nedir?

İkiye tümleyen (two's complement), bilgisayarların işaretli tam sayıları sabit sayıda bitle göstermek için kullandığı standart yöntemdir. Bu araç bir ondalık sayı ile bir n bitlik yazmaç genişliği alır; ardından bu değerin ikiye tümleyen bit dizisi olarak nasıl saklandığını, bu bitlerin işaretsiz değer olarak neye karşılık geldiğini ve işaretli sayı olarak nasıl yorumlandığını gösterir. Hem pozitif hem negatif girişlerle çalışır.

Nasıl Kullanılır?

Kodlamak istediğiniz ondalık değeri ve bit sayısını (genellikle 8, 16, 32) girin. Araç, değeri modulo aritmetiği kullanarak n bitlik yazmaca sığdırır, ikili gösterimi görüntüler ve işaretli yorumu çözer. Negatif girişler otomatik olarak ikiye tümleyen biçimiyle saklanır.

Formülün Açıklaması

Bir \(x\) değerini \(n\) bitte saklamak için, saklanan (işaretsiz) diziyi şöyle hesaplayın:

$$\text{stored} = \left(\left(x \bmod 2^{n}\right) + 2^{n}\right) \bmod 2^{n}$$

Saklanan bir değerin ikiye tümleyeni (negatifi) ise

$$\text{twos} = \left(2^{n} - \text{stored}\right) \bmod 2^{n}$$

şeklindedir. Bir \(n\) bitlik dizinin işaretli anlamını çözmek için: dizi en az \(2^{n-1}\) ise değer \(\text{pattern} - 2^{n}\) olur (negatiftir); aksi halde dizinin kendisidir.

Sekiz bitlik ikili hücreler, en soldaki bit negatif işaret ağırlığı olarak işaretli
İkiye tümleyende en anlamlı bit negatif bir ağırlık taşır ve aralığı pozitif ve negatif değerlere böler.

Çözümlü Örnek

-5'i 8 bitte kodlayalım. Burada \(2^{8} = 256\) olduğundan

$$\text{stored} = \left(\left(-5 \bmod 256\right) + 256\right) \bmod 256 = 251$$

olur. İkili tabanda \(251 = 11111011\)'dir. 251'i çözelim: \(251 \ge 2^{7}\ (128)\) olduğundan işaretli değer \(251 - 256 = -5\)'tir. 251'in ikiye tümleyeni \(\left(256 - 251\right) \bmod 256 = 5\) olup büyüklükle uyuşur.

Üç adımlı diyagram: özgün bitler, ters çevrilmiş bitler, ardından negatife çevirmek için bir ekleme
Bir değeri negatife çevirmek için tüm bitleri ters çevirin ve bir ekleyin.

Sıkça Sorulan Sorular

Negatif sayılar neden kocaman ikili diziler gibi görünüyor? Baştaki bitler 1'dir; \(n\) bitlik işaretli aritmetikte baştaki 1, sayının negatif olduğunu gösterir. Dolayısıyla \(11111011\) değeri 251 değil, -5'tir.

n bitte hangi aralık temsil edilir? İşaretli değerler \(-2^{n-1}\) ile \(2^{n-1} - 1\) arasındadır. 8 bit için bu aralık -128 ile 127 arasıdır.

Sayım çok büyükse ne olur? Yazmaca sığmayan değerler, tıpkı gerçek donanımda olduğu gibi modulo işlemiyle başa sarar (taşma / overflow).

Son güncelleme: