Bit Kaydırma Hesaplama

Bit kaydırmasını hesaplamak için bir tam sayı ve kaydırma miktarı girin.

Nasıl hesaplanır?

Girilen değer tam sayıya yuvarlanır ve işaretli 64 bitlik bir tam sayı üzerinde seçilen sayıda bit konumu kadar kaydırılır. Sola kaydırma: sonuç = değer × 2n. Sağa kaydırma: sonuç = taban(değer ÷ 2n); işareti koruyan aritmetik kaydırmadır, bu yüzden negatif sayılar eksi sonsuza doğru yuvarlanır (-7'nin 1 basamak sağa kaydırılması -4 verir).

Kaydırma miktarı n 0 ile 63 arasında bir tam sayı olmalı, değerin büyüklüğü de 253'ü aşmamalıdır. İşaretli 64 bit aralığını aşacak bir sola kaydırma (örneğin 1'in 63 basamak sola kaydırılması) başa dönmek yerine sonuç vermez. Negatif sonuçlar ondalık satırda eksi işaretiyle görünür, ancak onaltılık ve ikili satırlar 64 bitlik ikiye tümleyen (two's complement) düzenini gösterir; bu yüzden -5, 0xFFFFFFFFFFFFFFFB olarak çıkar.

Örnek hesaplama

13 sayısını 3 basamak sola kaydıralım. İkili düzende 13, 1101 olarak yazılır. Tüm bitleri üç basamak sola taşıyıp sağı sıfırla doldurunca 1101000 elde edilir. Bu, 13 × 23 = 13 × 8 = 104 eder. Araç ayrıca onaltılık karşılığı 0x68 (6 × 16 + 8 = 104) ve ikili karşılığı 0b1101000 değerlerini gösterir.

Bu örneği dene →

Sık yapılan hatalar

  • Negatif bir sayının sağa kaydırılmasının sıfıra doğru yuvarlanacağını sanmak: sonuç aşağı yuvarlanır, yani -7 >> 1 işlemi -3 değil -4 verir.
  • Negatif sonucun onaltılık ve ikili satırlarını sayının mutlak değeri sanmak: bunlar 64 bitlik ikiye tümleyen düzenidir, bu yüzden -5 için uzun F ve 1 dizileri görünür.
  • 64 veya daha büyük ya da negatif bir kaydırma girip başa dönmesini beklemek: araç yalnızca 0 ile 63 arasını kabul eder, bu aralığın dışında sonuç vermez.
  • Sola kaydırmanın her zaman 2n ile çarpmaya eşit olduğunu varsaymak: bu yalnızca sonuç işaretli 64 bit aralığına sığdığı sürece geçerlidir; 1'in 63 basamak sola kaydırılması reddedilir.
  • 13,6 gibi ondalıklı bir değer girip kesirli sonuç beklemek: bit kaydırma tam sayılarla çalışır, bu nedenle değer önce 14'e yuvarlanır.

Bu hesaplama hakkında

Bit düzeyinde kaydırma, bir tam sayının ikilik gösterimindeki her biti belirli bir konum sayısı kadar sola veya sağa taşır. Sola kaydırma (<<) sağdan sıfır bitleri ekler ve 2ⁿ ile çarpmaya eşdeğerdir; sağa kaydırma (>>) sağdaki bitleri düşürür ve 2ⁿ'ye tam sayı bölmeye eşdeğerdir; negatif sayılarda bu araç, çoğu programlama dili gibi işaret bitini koruyan aritmetik kaydırma kullanır (sonuç eksi sonsuza doğru yuvarlanır). Bu araç, girdiğiniz tam sayıya seçtiğiniz işlemi uygular ve sonucu ondalık, on altılık ve ikilik gösterimde yan yana gösterir.

Yazılım mühendisleri, gömülü sistem geliştiricileri ve bilgisayar bilimi öğrencileri, ikinin kuvvetleriyle hızlı aritmetik işlemler yapmak, birden fazla değeri tek bir tam sayı içine paketlemek (bayraklar, RGB renk kanalları, ağ protokolü başlıkları) ve özet (hash) fonksiyonları veya sağlama toplamları uygulamak için bit kaydırmayı sürekli kullanır — CRC gibi işlemler ve birçok kriptografik ilkel neredeyse tamamen kaydırma ve XOR işlemlerinden oluşur, çünkü bunlar tek bir CPU çevriminde çalışır ve genel bir çarpma veya bölmeden çok daha hızlıdır.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Bu hesaplayıcı işaretli 64 bitlik bir tamsayıda çalışır; başka yerde yazdığınız kodla karşılaştırırken bu önemlidir. 1'i 31 bit sola kaydırmak burada 2147483648 verir, C ya da JavaScript'te 32 bitlik işaretli bir tamsayı ise bunu negatif bir sayıya sarar. 64 bitlik aralığı aşacak bir sola kaydırma, sarmak yerine sonuç vermez. Sonucunuz programınızdan farklıysa önce tamsayı genişliğine bakın. Hangi dille karşılaştırıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar