Bir sayıyı farklı sayı tabanları (ikilik, onluk, onaltılık vb.) arasında dönüştürün.
Sayı tabanı dönüşümü, bir sayısal değerin farklı sayı sistemlerindeki gösterimleri arasında çevrim yapma işlemidir. Günlük yaşamda onluk (decimal) sistemi kullanırız; bilgisayarlarda ise ikilik (binary) doğaldır. Yazılım, siber güvenlik, ağ yönetimi, gömülü sistemler, veri bilimi ve görsel tasarım gibi alanlarda ikilik (2), sekizlik (8), onluk (10) ve onaltılık (16) en sık karşılaştığımız tabanlardır. Bu rehber, taban dönüşümünün mantığını, yaygın senaryolarını, pratik ipuçlarını, doğrulama stratejilerini ve hata kaynaklarını kapsamlı şekilde açıklar.
Bir sayı sisteminin tabanı, kullanılabilen farklı rakam sayısını ve basamak değerlerinin artış hızını belirler. Onluk sistem 0–9 olmak üzere 10 rakama sahiptir ve her basamak 10’un bir kuvvetini temsil eder. İkilikte sadece 0 ve 1 vardır; onaltılıkta 0–9’un yanında A–F (10–15) kullanılır. 10’dan büyük tabanlarda, 35’e kadar olan değerler A–Z harfleriyle temsil edilir.
Standart yöntem iki adımdan oluşur: (1) Onluğa çevirme, (2) hedef tabana aktarma. İlk adımda sayıyı basamak değerleriyle genişletip toplar, onluk değeri bulursunuz. İkinci adımda sayıyı hedef tabana bölerek kalanları tersten yazarsınız. Böylece aynı değerin farklı tabandaki gösterimini elde edersiniz.
10110₂ = 1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 0×2⁰ = 16 + 0 + 4 + 2 + 0 = 22₁₀. İkilik sayıyı onluğa çevirmek basit bir kuvvetler toplamıdır. Aynı sayı onaltılıkta 16 tabanına aktarılırken 22₁₀ ÷ 16 = 1 kalan 6 → 16₁₆ (0x16) olarak yazılır.
İkili veriyi insanlar için okunabilir hale getirir. 1 byte = 8 bit olduğundan iki hex hanesi tam bir byte’ı temsil eder. Bu nedenle bellek adresleme, düşük seviye hata ayıklama, #RRGGBB
renk kodları ve ikili protokollerle çalışırken hex tercih edilir. Örneğin 11111111₂ = FF₁₆ = 255₁₀’dur.
Base64 bir sayı sistemi değil, kodlama şemasıdır. Amaç, ikili veriyi e-posta veya JSON gibi metin kanallarında güvenle taşımaktır. Taban dönüşümü ise aynı sayısal değerin farklı tabanlardaki gösterimini üretir. Bu nedenle “hex → base64” işlemi, sayısal bir taban değişimi değil, iki farklı kodlama arasında veri dönüştürmedir.
Taban 2’de yalnızca 0 ve 1 geçerli iken, taban 8’de 0–7, taban 16’da 0–9 ve A–F geçerlidir. Girdi doğrulaması, sayının tamamının seçilen tabanda temsil edilebilir olduğunu onaylamalıdır. Aksi halde 19 (taban 8) gibi hatalı girişler yanlış sonuçlara yol açar. Sağlam bir doğrulama için “girdi → onluk → yeniden giriş tabanına çevir → eşit mi?” kontrolü etkili bir taktiktir.
Negatif değerler başındaki -
işaretiyle gösterilir ve işaret, basamak dönüşümünden bağımsızdır. Yani önce mutlak değer dönüştürülür, sonra gerekirse başa -
eklenir. Bu yaklaşım, çıktı tabanından bağımsız olarak tutarlıdır.
Kesirli basamakları dönüştürmek için noktadan (veya virgülden) sonraki kısım ayrı ele alınır. Örneğin 0.625₁₀ → 0.101₂, çünkü 0.625 = 1/2 + 0/4 + 1/8’tir. Bu işlem, periyodik genişlemeler ve hassasiyet seçimi gibi ek kurallar gerektirir. Çoğu pratik araç, önce tam sayıları hedefler; daha sonra “gelişmiş mod” ile kesirli dönüşüm eklenebilir.
#1E88E5
kodundaki 1E, 88 ve E5 ikişer hane olarak R, G, B bileşenleridir. 1E₁₆ = 30₁₀, 88₁₆ = 136₁₀, E5₁₆ = 229₁₀. Bu şekilde hex renkler hızla onluk RGB’ye dönüştürülür (30, 136, 229).
JavaScript gibi tarayıcı dillerinde standart tamsayı aralığı aşıldığında doğruluk kaybı yaşanabilir. Bu durumda “büyük tamsayı” (BigInt) türü veya keyfi hassasiyetli kütüphaneler tercih edilmelidir. Özellikle kriptografik anahtarlar, blokzincir adresleri ve büyük sayaçlarda taban dönüşümü yaparken bu kritik bir gereksinimdir.
Uzun dizilerde dönüşümü akış mantığıyla yapmak (parça parça işlemek), DOM güncellemelerini en aza indirmek ve gereksiz kopyalardan kaçınmak performansı artırır. Büyük verileri dönüştürürken, yalnızca çıktı gösterimini üretmek ve ara yapıları serbest bırakmak tarayıcıyı ferahlatır.
Hex çıktıları çoğunlukla büyük harfle verilir (FF, 1A3F). Kullanıcı tercihi olarak küçük harfe de (ff, 1a3f) izin verilebilir. Okunabilirlik için 4’lü veya 8’li gruplara ayırma (örn. 0xDEAD_BEEF) bazı dillerde desteklenir; web aracı tarafında isteğe bağlı bir “ayraç” seçeneği sunmak deneyimi iyileştirir.
Kullanıcı girdisini kırpma (trim), boşlukları temizleme, ASCII dışı karakterleri reddetme ve uzunluk sınırlaması uygulama iyi bir savunmadır. Özellikle panodan yapıştırılan metinlerde görünmeyen karakterler (ör. zero-width space) hatalara neden olabilir. Girdiyi normalize etmek dönüşümü güvence altına alır.
Taban 36, 0–9 ve A–Z setiyle en yoğun karakter kümesini sağlar. Kısa kodlar, tokenlar veya URL benzeri kimliklerde sıkça kullanılır. Aynı sayısal değer taban 36’da daha kısa bir metinle ifade edilebilir.
Sonuçları panoya kopyalamak, CSV veya PDF olarak indirmek ve yazdırmak iş akışlarını hızlandırır. Teknik dokümanlarda hem girdi hem çıktı tabanının açıkça belirtilmesi (örn. (10110)[2] = (22)[10]
) yanlış anlaşılmaları engeller.
Hatalar açık, eyleme geçirilebilir olmalı: “Giriş tabanı 8 iken ‘8’ hanesi kullanılamaz.” Kullanıcıya hatayı düzeltmesi için ipucu verin ve mümkünse hatalı haneyi vurgulayın. Bu yaklaşım, özellikle eğitim amaçlı kullanımda faydalıdır.
Metin boyunca “taban dönüşümü”, “sayı tabanı çevirme”, “binary decimal hexadecimal”, “ikilik onluk onaltılık”, “base conversion”, “hex → dec”, “dec → bin”, “taban 36” gibi sorgular doğal akışta yerleştirilmiştir.
Taban dönüşümü, aynı sayısal değeri farklı dillerde ifade etmek gibidir. Onluğa çevirme ve hedef tabana aktarma adımlarını dikkatle uyguladığınızda; programlamadan tasarıma, siber güvenlikten veri aktarıma kadar pek çok alanda hızlı ve güvenilir sonuçlar elde edersiniz. Sağlam girdi doğrulaması, büyük sayılar için BigInt yaklaşımı ve temiz hata mesajlarıyla aracınız hem öğretici hem de profesyonel kullanım için ideal hale gelir.