Taban dönüşümü nasıl çalışır?
Her konumsal sayı sistemi, bir değeri tabanın kuvvetleriyle çarpılan basamakların toplamı olarak temsil eder. Taban değiştirmek, aynı değeri farklı bir kuvvet serisine göre yeniden yazmak anlamına gelir.
- Giriş alfabesini doğrula. Her taban belirli bir basamak kümesini kabul eder. İkili 0 ve 1'i; oktal 0-7'yi; onluk 0-9'u; hex 0-9 ve A-F'yi kabul eder. Seçilen alfabenin dışındaki bir karakter, herhangi bir dönüşüm çalıştırılmadan önce satır içi hata olarak gösterilir.
- Değeri ayrıştır. JavaScript Number sınırına sığan değerler (2^53-1'e kadar) için araç
parseInt(text, base)çağırır. Bu sınırın üzerindeBigInt'e geçerek dönüşümün keyfi büyük tam sayılarda tam kalmasını sağlar. - Her hedef tabanda yeniden oluştur. Ayrıştırılan değer,
Number.prototype.toString(base)veyaBigInt.prototype.toString(base)aracılığıyla her çıktı tabanına dönüştürülür. Dört standart bölme (ikili, oktal, onluk, hex) ve özel taban bölmesi birlikte güncellenir. - Biçimlendirmeyi uygula. Ön ek seçeneği, ikili, oktal ve hex çıktısının başına 0b, 0o veya 0x ekler. Basamak gruplama, her dört ikili basamağa ve her iki hex basamağına alt çizgi ekler. Hex büyük/küçük harf seçeneği A-F harfleri için büyük veya küçük harf seçmeni sağlar.
- Canlı bölmeler arası senkronizasyon. Herhangi bir bölmeyi düzenlemek, diğer bölmeleri güncelleyen 100 ms gecikmeli bir yeniden dönüşüm tetikler. Yazdığınız bölme, her tuş vuruşunda doğruluk kaynağı olarak kabul edilir.
Neden bir taban dönüştürücü kullanmalısınız?
- Bellek dökümlerini okumak. Hata ayıklayıcılar, sökmücüler ve çekirdek dökümü görüntüleyiciler adresleri ve kayıt değerlerini hex biçiminde gösterir. Bunları onluğa çevirmek, aynı izde başka yerlerde bildirilen sayımlar, boyutlar ve ofsetlerle karşılaştırmayı kolaylaştırır.
- Renk kodlarıyla çalışmak. CSS, tasarım araçları ve görüntü biçimleri renkleri #d2511a gibi hex üçlüleri olarak belirtir. Her çifti onluğa dönüştürmek, aynı rengi renk seçicinizin veya erişilebilirlik denetleyicinizin beklediği rgb(210, 81, 26) biçimine çevirir.
- Dosya izinlerini çözmek. Unix chmod değerleri oktal olarak yazılır: 755, her oktal basamağı üç ikili bite çevirdiğinizde rwxr-xr-x anlamına gelir. Dönüştürücü bu eşleşmeyi tek adımda göstererek bir man sayfasına başvurmadan izin setini kontrol etmenizi sağlar.
- Bit bayraklarını hata ayıklamak. Ağ protokolleri, çekirdek sistem çağrıları ve donanım kayıtları pek çok boolean bayrağını tek bir tam sayıya sığdırır. Tam sayıyı ikilide okumak, hangi bitlerin ayarlı olduğunu bir bakışta gösterir; bu, bir bayrağın neden etki etmediğini araştırırken tam ihtiyacınız olan şeydir.
Yaygın uygulamalar
Taban dönüşümü, bir sayı yalnızca bir sayımdan fazlasını ifade ettiğinde geliştirici, güvenlik ve donanım çalışmalarında gün içinde sıkça karşılaşılır.
- Gömülü aygıt yazılımı: JTAG probundan alınan hex dökümünü okuyun, bir işlevin adresini bulun ve hata ayıklayıcı betiklerinizin kabul ettiği onluk ofseti kullanarak kesme noktası komutu yazın.
- Ağ güvenliği: noktalı onluk biçimde yazdırılmış 32 bitlik bir ağ maskesini ikili biçime çevirerek ön ek uzunluğunu sayın, ardından ACL kuralı için CIDR biçimini yazın.
- CTF bulmacaları ve kripto zorlukları: XOR altında sızdırılmış bir anahtar parçasını aday düz metinle karşılaştırırken hex, onluk ve ikili arasında geçiş yapın.
Uygulamalı bir örnek
Onluk bölmeye 255 yazın. Hex bölmesi FF (ön ek açıkken 0xFF) olarak güncellenir, ikili bölmesi 11111111 (1111_1111 olarak gruplandırılmış) ve oktal bölmesi 377 olur. Özel bölmenin tabanını 36'ya çevirin; aynı değer 73 olarak gösterilir. Onluk bölmeye 123456789012345678901234567890 gibi çok büyük bir değer yazın; hex bölmesi BigInt yolunu kullanarak 18EE90FF6C373E0EE4E3F0AD2 olarak oluşturulur.
FAQ
Sayı tabanı nedir?
Sayı tabanı veya radix, bir konumsal sistemin bir sonraki konuma geçmeden önce kullandığı farklı rakam sayısıdır. Onluk (taban 10) 0-9 kullanır; ikili (taban 2) yalnızca 0 ve 1 kullanır; onaltılık (taban 16) 0-9 artı A-F kullanır. Bir sayının değeri taban değiştirildiğinde değişmez — yalnızca rakamlarının yazılış ve gruplandırılma biçimi değişir.
Programlamada neden onaltılık kullanılır?
Bir hex basamağı tam olarak dört ikili bite karşılık gelir; bu nedenle iki hex basamağı bir baytı ve sekiz hex basamağı 32 bitlik bir kelimeyi kapsar. Bu, hex'i bellek adresleri, kayıt içerikleri, renk üçlüleri ve kriptografik anahtarlar için en kompakt insan tarafından okunabilir biçim yapar. 0xFF'yi okumak 11111111'i okumaktan daha hızlıdır ve gerektiğinde bit deseni orada hazırdır.
Taban 36'nın ötesine geçebilir miyim?
Bu araç taban 36 ile sınırlıdır çünkü bu, 0-9 ardından A-Z'yi basamak alfabesi olarak kabul eden yerel JavaScript parseInt ve toString API'lerinin üst sınırıdır. Taban 37-62 özel bir alfabe ile mümkündür (Bitcoin adreslerinde kullanılan Base58 bunun bir örneğidir) ancak her yüksek taban kendi kanonik basamak sıralamasına ihtiyaç duyduğundan ayrı bir araç olarak ele alınmaktadır.
Negatif sayıları ve kayan noktalıları destekliyor mu?
Negatif tam sayılar, Number.prototype.toString'in varsayılan davranışıyla aynı şekilde, her tabanda baştaki eksi işaretiyle gösterilir. Seçilen bit genişliği (8, 16, 32, 64) için ikinin tümleyeni gösterimi, eklemeyi planladığımız ayrı bir görünümdür. Kayan noktalı taban dönüşümü de bu sürümün kapsamı dışındadır; araç yalnızca tam sayı değerlerini işler.
Taban dönüşümü, aygıt yazılımı, güvenlik ve grafik çalışmalarında tekrar tekrar karşılaşılan küçük bir iştir. Bunu, Node ve V8'in zaten gönderdiği aritmetik ilkellerle bir tarayıcı sekmesinde yapmak, çalışmayı hızlı tutar ve verileri makinenizde bırakır.