İkili sayı hesaplayıcı
İkili sayılarla hesaplayın: toplama, çıkarma, çarpma, kalanlı bölme, bit düzeyinde AND, OR, XOR, NOT ve sola/sağa bit kaydırma. İki ikili değer girin; ikili, onluk, onaltılık ve sekizlik düzende kesin sonuçları adım adım çözümle birlikte alın.
İkili sayıları toplayın, çıkarın, çarpın ve birleştirin
İkili aritmetik – temel kurallar
Burada:
- \(b_i\) — tek bir bit; ya 0 ya da 1
- \(i\) — basamak konumu; sağdan sayılır ve 0'dan başlar
- \(2^i\) — o konumun basamak değeri (ağırlığı)
İkili sayılar yalnızca 0 ve 1 rakamlarını kullanır ve her basamağın değeri 2'nin bir kuvvetidir. Aritmetik onluk aritmetikten hiç farklı çalışmaz; yalnızca 2 tabanlı basamak tabloları kullanılır: toplamada \(0+0=0\), \(0+1=1\) ve \(1+1=10_2\)'dir (0 yazılır, 1 elde olarak bir sonraki basamağa taşınır); çıkarmada \(1-0=1\), \(1-1=0\) olur ve \(0-1\) durumunda bir sonraki basamaktan (değeri 2 olan) borç alınarak 1 yazılır.
Bit düzeyindeki işlemlerde her sonuç biti yalnızca aynı basamaktaki iki işlenen bitine bağlıdır; tıpkı sayıların alt alta yazılmış gibi. k basamak sola kaydırma, sabit genişlikli bir sözcük içinde sayıyı \(2^k\) ile çarpar; k basamaklık aritmetik sağa kaydırma ise \(-\infty\) yönünde yuvarlayarak \(2^k\)'ye böler.
İkili hesaplayıcı – hesaplama örneği
Örnek: hesaplayıcının varsayılan değerleri olan A = 1011 ve B = 0110 ikili sayılarını toplayalım.
Önce her iki sayıyı \(2^3, 2^2, 2^1, 2^0\) basamak değerlerini kullanarak onluk düzende okuyalım:
\[ 1011_2 = 8 + 0 + 2 + 1 = 11_{10}, \qquad 0110_2 = 0 + 4 + 2 + 0 = 6_{10} \]
Şimdi sağdan başlayarak basamak basamak toplayalım; bir basamağın toplamı 2 veya daha fazla olduğunda 1 elde olarak taşınır:
\[ 1011_2 + 0110_2 = 10001_2 \]
Onluk olarak kontrol edelim: \(11 + 6 = 17\), ve gerçekten \(10001_2 = 16 + 1 = 17\)'dir.
Sonuç: ikili düzende 10001, onlukta 17, onaltılıkta 0x11 ve sekizlikte 0o21.
Hesaplayıcı nasıl kullanılır
- Açılır listeden bir İşlem seçin: Toplama, Çıkarma, Çarpma, Kalanlı bölme, bit düzeyinde işleçlerden biri (AND, OR, XOR, NOT) veya bit kaydırma (A << B, A >> B).
- Birinci sayıyı (A) yalnızca 0 ve 1 rakamlarıyla girin; negatif değerler için başına isteğe bağlı bir eksi işareti koyabilirsiniz. Sayının içindeki boşluklar yok sayılır.
- İkinci sayıyı (B) aynı biçimde girin. NOT işleminde yalnızca A kullanılır; kaydırmalarda B, kaydırma miktarıdır (o da ikili düzende yazılır).
- NOT, sola kaydırma ve sağa kaydırma için bir Bit genişliği seçin (8, 16, 32 veya 64 bit). Bu üç işlemin sonucu, seçilen genişlikte ikilerin tümleyeni biçiminde bir sözcüktür.
- Sonuçları okuyun: ikili düzende yanıt ve bunun onluk, onaltılık ve sekizlik karşılıkları. Bölmede kalan da gösterilir; Hesaplama adımları paneli sonucun nasıl bulunduğunu açıklar.
İkili aritmetik ne demek
İkili düzen dijital donanımın sayı sistemidir: bir bit 0 ya da 1'dir, çünkü bir transistör kapalı ya da açıktır. Her ikili sayı bir bit dizisidir ve sağdan \(i\) konumundaki bitin ağırlığı \(2^i\)'dir. Dolayısıyla 1011 "bin on bir" değil, \(1\cdot8 + 0\cdot4 + 1\cdot2 + 1\cdot1 = 11\) değeridir. Sayıları bu biçimde okuduğunuzda bütün dört işlem, okuldan bilinen yöntemle yapılır — yalnızca eldiyi 10'da değil 2'de taşırsınız.
Bit düzeyindeki işlemler farklı çalışır: her basamağı bağımsız olarak ele alırlar ve bu yüzden maske ve bayrak işlemleri için idealdirler. İki sayının AND işleminde yalnızca her ikisinde de 1 olan bitler kalır; OR'da işlenenlerden en az birinde 1 olan bitler; XOR'da ise tam olarak birinde 1 olan bitler kalır. Aşağıdaki tablo tek bir basamak için kuralı gösterir:
| A | B | A AND B | A OR B | A XOR B |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
Kaydırmalar, iki'nin kuvvetleriyle ölçeklemenin ikili kestirmesidir. 1011 sayısını 2 basamak sola kaydırmak 101100 verir; bu da \(11 \times 4 = 44\) demektir — tabii hiçbir bit sözcüğün sol kenarından düşmediği sürece. Bit genişliğinin önemli olmasının nedeni budur: 32 bitlik bir yazmaçta 1 sayısı 31 kez sola kaydırılırsa hâlâ sorun yoktur, ama 32 kez sola kaydırılırsa bit kaybolur ve sonuç sarmayla 0'a döner. Bilgisayar bilimcileri bunu görüntü maskelerinden IP alt ağlandırmasına kadar her yerde kullanır; CIDR hesaplayıcı da aynı bit maskesi mantığını adres aralıklarına uygular.
İki sayıyla hesaplamak yerine tek bir sayıyı tabanlar arasında çevirmek isterseniz İkili Dönüştürücü'yü kullanın; Onaltılık Dönüştürücü de programcıların sık tercih ettiği onaltılık gösterim için aynı işi yapar.
Varsayımlar, sınırlamalar ve ipuçları
- Giriş başına en çok 1024 bit. Tüm aritmetik işlemler tam sayı matematiğiyle yapılır; bu nedenle çok uzun ikili sayılar bile kesin sonuç verir — toplama, çıkarma, çarpma, bölme ve bit düzeyi kiplerinde yuvarlama ya da taşma yoktur.
- NOT ve kaydırmalar sabit genişliklidir. Tam olarak seçtiğiniz sözcük boyutunda, tıpkı bir CPU yazmacında olduğu gibi değerlendirilirler. Bu işlemlerin onaltılık ve sekizlik sonuçları, baştaki sıfırlarla doldurulmuş işaretsiz bit örüntüleri olarak gösterilir.
- Bölme sıfıra doğru kesilir ve kalan da bildirilir; bu davranış JavaScript, C ve Java'daki
/ve%işleçleriyle uyumludur: A = B × Q + R, |R| < |B| ve R, A'nın işaretini alır. - Adım tabloları (elde satırları, borç satırları, bit düzeyi sütunları) 64 bit'e kadar girdiler için, çarpma içinse B'de 1 olan bit sayısı 24'ü aşmadığı sürece çizilir; daha uzun girdiler yine kesin hesaplanır, yalnızca adım adım görsel çözüm gösterilmez.
- Baştaki sıfırlar sayısal değeri değiştirmez —
0110da110da 6'dır — ama NOT ve kaydırmalar sözcüğün biçimini bu sıfırlardan belirlediği için, doldurma sizin için önemliyse genişliği açıkça girin. - Negatif sayılar yalnızca işaretli büyüklük biçiminde (başta eksi ile) kabul edilir; hesaplayıcı bunları içeride dönüştürür ve sonucu ikilerin tümleyeni örüntüsü olarak değil, eksi işaretle gösterir (yalnızca NOT ve kaydırma kipinde hariç).
Sıkça Sorulan Sorular
Bir ikili sayıyı elle onluk düzene nasıl çevirebilirim?
Her bitin üstüne sağdan sola 2'nin kuvvetlerini yazın: 1, 2, 4, 8, 16, … Sonra 1'in altına gelen kuvvetleri toplayın. Örneğin \(1101_2 = 8 + 4 + 0 + 1 = 13\). En sağdaki bitin (0 konumu) ağırlığı her zaman \(2^0 = 1\)'dir ve sola doğru her adımda ağırlık iki katına çıkar.
Bir onluk sayıyı adım adım ikili düzene nasıl çevirebilirim?
Sayı 0 olana kadar tekrar tekrar 2'ye bölün ve her adımda kalanı yazın. Ardından kalanları en alttakinden en üste doğru okuyun. 13 için: \(13 \div 2 = 6\) kalan 1, \(6 \div 2 = 3\) kalan 0, \(3 \div 2 = 1\) kalan 1, \(1 \div 2 = 0\) kalan 1 — 1101 kalan dizisi, sayının ikili yazılımıdır.
İkili düzende 1 + 1 neden 10 eder?
Çünkü ikili düzende 2 diye bir rakam yoktur. Bir basamağın toplamı 2 olduğunda o basamağa 0 yazılır ve soldaki bir sonraki basamağa 1 elde olarak taşınır; tıpkı onluk sistemde bir basamağın toplamı 9'u aştığında elde taşınması gibi. Dolayısıyla \(1 + 1 = 10_2\)'dir ve bu "bir sıfır" diye okunur — ikinin ikili yazılımıdır (bir tane iki, artı sıfır tane bir).
AND, OR ve XOR arasındaki fark nedir?
Üçü de iki sayıyı basamak basamak karşılaştırır. AND yalnızca iki işlenende de 1 olan basamaklarda 1 verir — bitleri ayıklamak veya maskelemek için yararlıdır. OR, işlenenlerden en az birinde 1 olan basamaklarda 1 verir — bitleri 1 yapmak için yararlıdır. XOR ise tam olarak birinde 1 olan basamaklarda 1 verir — bitleri ters çevirmek için yararlıdır; ayrıca bir sayının kendisiyle XOR'u her zaman 0'dır.
NOT ve kaydırmalar için neden bit genişliği seçmem gerekiyor?
NOT ve kaydırmalar sonuçtaki bit sayısını değiştirir; dolayısıyla yanıt, tıpkı bir CPU yazmacında olduğu gibi, kapsayıcının boyutuna bağlıdır. 8 bitlik bir sözcük içinde NOT 0000 0101 işlemi baştaki sıfırlar dahil her biti ters çevirir ve 1111 1010 verir. Aynı şekilde k basamak sola kaydırma, hiçbir bit sözcüğün sol kenarından düşmediği sürece \(2^k\) ile çarpma anlamına gelir — aksi halde değer sarar.
İkili düzende negatif sayılarla ne olur?
Bu hesaplayıcı başında eksi işaretiyle yazılmış negatif girdileri kabul eder ve kesin işaretli sonuçlar hesaplar. Ancak sabit genişlikli NOT ve kaydırma işlemlerinde negatif sayılar ikilerin tümleyeni kuralını izler: w bitlik bir sözcükte \(-A\), \(2^w - A\) olarak saklanır ve NOT A, \(-A - 1\)'e eşittir. Bu yüzden herhangi bir genişlikte NOT 0 işleminin sonucu −1'dir.
İkili aritmetiği elle yaparken en sık yapılan hatalar nelerdir?
Bir basamağın toplamı 2 olduğunda eldiyi unutmak, çıkarmada borç alırken 2 yerine 10 değerini almak ve sonucu onluk rakamlarmış gibi okumak (1011 bin on bir değil, on birdir). Ayrıca kaydırma yönüne dikkat edin: sola kaydırma \(2^k\) ile çarpar, sağa kaydırma ise kalanı atarak böler — 1011'in (11) 1 basamak sağa kaydırılması 22 değil, 101 (5) verir.
İkili bölme kesirli sonuç üretir mi?
Hayır — bu hesaplayıcı, JavaScript, C veya Java'daki / ve % işleçleri gibi kalanlı tam sayı bölümü yapar. Bölüm sıfıra doğru kesilir ve A = B × Q + R bağıntısında kalan, bölünenin işaretini alır. Sıfıra bölme tanımlı bir bölüme sahip olmadığından reddedilir ve hata olarak gösterilir.