İ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.
Çö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.
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).