İkiye Tümleyen Hesaplama Aracı nedir?
İkiye tümleyen (two's complement), bilgisayarların işaretli tam sayıları saklamak için kullandığı standart yöntemdir. Bu araç, herhangi bir ondalık sayıyı seçtiğiniz bit genişliğine (4, 8, 16 veya 32 bit) göre ikiye tümleyen ikilik gösterimine dönüştürür ve hem işaretsiz bit deseninin değerini hem de o bitlerin temsil ettiği işaretli değeri gösterir.
Nasıl kullanılır?
Pozitif ya da negatif bir ondalık sayı girin ve bit genişliğini seçin. Araç sayıyı \(2^n\) tabanında mod alarak indirger ve bir işlemcinin (CPU) saklayacağı kesin bit desenini üretir. Ayrıca aynı desenin hangi işaretli değere karşılık geldiğini de söyler; böylece dönüşümün doğruluğunu rahatça kontrol edebilirsiniz.
Formülün açıklaması
n bitlik bir alan için işaretsiz gösterim şöyledir: $$u = ((x \bmod 2^n) + 2^n) \bmod 2^n.$$ Bu işlem negatif sayıları sarmalayarak (wrap) dönüştürür: 8 bitte −5 değeri \(256 - 5 = 251\) olur ve bunun ikilik karşılığı 11111011'dir. Bir deseni tekrar işaretli değere çözmek için en anlamlı bite (MSB) bakın: eğer 1 ise (yani \(u \ge 2^{n-1}\)), değer \(u - 2^n\) olur; aksi takdirde basitçe \(u\) değerine eşittir. Negatif almanın eşdeğer bir yolu da tüm bitleri terslemek ve bir eklemektir: \(\sim x + 1\).
Örnek çözüm
−5 sayısını 8 bitlik ikiye tümleyene çevirelim. 1. Adım: \(2^8 = 256\). 2. Adım: $$u = ((-5 \bmod 256) + 256) \bmod 256 = 251.$$ 3. Adım: 251'in ikilik karşılığı 11111011'dir. MSB 1 olduğundan işaretli değer \(251 - 256 = -5\)'tir ve bu da dönüşümün doğru olduğunu teyit eder.
Sıkça Sorulan Sorular
Sayım bit genişliği için çok büyükse ne olur? Tıpkı donanımın yaptığı gibi \(2^n\) tabanında sarmalanır (taşma / overflow). Örneğin 8 bitte 300 sayısı \(300 - 256 = 44\) olur.
İşaretsiz değer neden işaretli değerden farklı çıkıyor? Aynı bitler iki farklı şekilde okunabilir. İşaretsiz okumada tüm bitler pozitif kabul edilir; işaretli okumada ise en üstteki bit negatif bir ağırlık taşır.
64 bit destekleniyor mu? Bu araç, sonuçları güvenli hassasiyet sınırları içinde tutmak için en fazla 32 bitlik yaygın genişlikleri destekler.