Baştaki Sıfır Sayacı

Baştaki sıfır bitlerini saymak için tam sayı ve bit genişliği girin.

Sonuç

6
10
0000001111101000

Nasıl hesaplanır?

Negatif olmayan bir ondalık tam sayı ve 1 ile 64 arasında bir bit genişliği girin (boş bırakılırsa 32). Araç, değeri sıfıra inene kadar sağa kaydırarak bit uzunluğunu, yani baştaki sıfırlar olmadan gereken ikili basamak sayısını bulur. Sonra baştaki sıfır = genişlik − bit uzunluğu hesaplanır. Sıfırın bit uzunluğu 0'dır, yani tüm bitler baştaki sıfırdır. İkili gösterim tam genişliğe sıfırla tamamlanır. Kesirli değer tam kısmına indirilir (22,9 değeri 22 olur); negatif sayılar, 0x16 gibi onaltılık metin ve seçilen genişliğe sığmayan değer sonuç vermez. Her şey işaretsiz sayılır, yani işaret biti yoktur.

Örnek hesaplama

16 bitlik bir yazmaçta 1000 değeri. İkili olarak 1000, 1111101000'dir; bu 10 basamaktır, yani bit uzunluğu 10'dur. Baştaki sıfır: 16 − 10 = 6. 16 bite tamamlanınca desen 0000001111101000 olur: altı sıfır, ardından sayının on biti. Kontrol için 2⁹ = 512 ≤ 1000 < 1024 = 2¹⁰, yani en yüksek 1 bitinin sırası 9'dur ve taban(log₂ 1000) = 9, bit uzunluğundan bir eksiktir.

Bu örneği dene →

Sık yapılan hatalar

  • Cevabın genişliğe bağlı olduğunu unutmak. Aynı 1000 değeri 16 bitte 6, 32 bitte 22 baştaki sıfıra sahiptir.
  • Onaltılık ya da ikili metin yazmak (0x3E8, 1111101000). Girdi ondalık sayı olarak okunur; önce çevirin.
  • Genişliğe sığmayan değer girmek, örneğin 8 bitle 300. Araç taşıp başa sarmak yerine sonuç vermez; daha geniş bir genişlik seçin.
  • Negatif sayıdan ikiye tümleyen göstermesini beklemek. Yalnızca işaretsiz değerler sayılır; -1 hepsi bir olarak gösterilmez, reddedilir.
  • Baştaki sıfır sayısını bit uzunluğu ya da en yüksek bitin sırasıyla karıştırmak. Baştaki sıfır = genişlik − bit uzunluğu; en yüksek 1 bitinin sırası ise bit uzunluğu − 1'dir.

Bu hesaplama hakkında

Baştaki sıfırları saymak (CLZ), bir sayının sabit bit genişliğindeki ikili gösteriminde ilk 1 bitinden önce kaç sıfır bit bulunduğunu saymak demektir — örneğin 8 bitlik 00010110 değerinde 3 baştaki sıfır vardır. Bu, bir sayının bit uzunluğunu ve floor(log₂(n)) değerini bulmakla yakından ilişkilidir, çünkü ilk 1 bitinin konumu ikisini de belirler.

Düşük seviyeli programcılar CLZ'yi hızlı tam sayı log2 hesaplamaları, kayan noktalı sayı mantislerinin normalleştirilmesi ve performans kritik kodlardaki bit manipülasyon hilelerinde kullanır; bu yüzden modern işlemcilerin çoğu bunu bir yazılım döngüsü yerine tek bir donanım komutu olarak sunar (x86'da LZCNT, ARM'de CLZ) — bu hesaplayıcı, o komutun sonucunu elle doğrulamanızı sağlar.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Sonuç seçtiğiniz yazmaç genişliğine bağlıdır; bu yüzden hedef tipinizin genişliğini seçin. Sıfır özel bir durumdur: 8 bitte 8 baştaki sıfır ve 0 bit uzunluğu verir, 255 ise hiç vermez. Donanımlar burada ayrışır; bazı komutlar sıfır için sonucu tanımsız bırakır, bazıları tam genişliği döndürür. Hızlı bir log2 için taban(log2 n), genişlik eksi 1 eksi bu sayıdır. Hangi dil ya da mimaride çalışıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar