Sayı sistemleri ve karakter kodlamaları, bilgisayar bilimlerinin ve dijital veri iletiminin temelini oluşturur. Bilgisayarlar verileri ikilik tabanda işlerken, insanlar onluk sistemi kullanır; geliştiriciler ve sistem yöneticileri ise bellekteki verileri daha okunabilir kılmak için genellikle onaltılık veya sekizlik sistemleri tercih eder. İkilik/Onaltılık Dönüştürücü aracı, bu farklı sayı tabanları arasında anında geçiş yapmayı sağlarken, aynı zamanda metin verileri ile bunların ham bayt karşılıkları arasında çift yönlü dönüşüm gerçekleştirir.
Sayı Tabanları Arasında Dönüşüm Esasları
Bilgisayar mimarisinde kullanılan her sayı sisteminin kendine özgü bir tabanı ve izin verilen karakter kümesi bulunur. Bu araçta desteklenen dört temel sayı sistemi şu şekildedir:
- İkilik (Binary): 2 tabanındadır ve yalnızca
0ile1rakamlarını kullanır. Dijital devrelerin en temel mantıksal seviyesini temsil eder. - Sekizlik (Octal): 8 tabanındadır ve
0ile7arasındaki rakamları içerir. Özellikle Unix dosya izinlerinde ve eski bilgisayar mimarilerinde yaygındır. - Onluk (Decimal): Günlük hayatta kullandığımız 10 tabanındaki sayı sistemidir;
0ile9arasındaki rakamlardan oluşur. - Onaltılık (Hex): 16 tabanındadır.
0ile9arasındaki rakamların yanı sıraA,B,C,D,EveFharflerini kullanır. Bellek adreslerini ve renk kodlarını daha kısa ifade etmek için tercih edilir.
Sayı modunda çalışırken, bu alanlardan herhangi birine veri girişi yapıldığında diğer üç alan anında güncellenir. Araç, girdileri işlerken esnek bir biçimlendirme yapısını destekler. Sayıların başında eksi işareti bulunabilir, sayılar boşluklar içerebilir veya 0b (ikilik), 0o (sekizlik), 0x (onaltılık) gibi yaygın ön eklerle yazılabilir. Ayrıca okunabilirliği artırmak için kullanılan alt çizgiler (_) ve beyaz boşluk ayırıcıları da girdi olarak kabul edilir.
Sınırsız Hassasiyet ve Negatif Sayıların Temsili
Geleneksel hesaplama araçlarının aksine, bu dönüştürücüde sayılar için pratik bir boyut sınırı bulunmamaktadır. Değerler, herhangi bir yuvarlama veya hassasiyet kaybı olmaksızın tam olarak dönüştürülür. Bu durum, JavaScript'in standart sayı sınırlarının ötesine geçebilen ve 4.096 karaktere kadar keyfi duyarlıklı tam sayıları destekleyen BigInt yapısı kullanılarak sağlanır.
Negatif sayılar dönüştürülürken, her tabanda sayının önündeki eksi işareti korunur. Sabit bit genişliğine sahip ikiye tümleyen (two's complement) gösterimi yerine, doğrudan işaretli gösterim tercih edilmiştir. Bu sayede, bit genişliği sınırlaması olmaksızın her sayı tabanında negatif değerlerin matematiksel karşılığı net bir şekilde korunur.
Metin ve Bayt Kodlaması (UTF-8)
Metin modunda araç, karakterleri bilgisayarın anlayacağı bayt değerlerine dönüştürür veya bu bayt değerlerinden tekrar anlamlı metinler üretir. Bu işlem sırasında dünya genelinde standart kabul edilen UTF-8 kodlama protokolü kullanılır. UTF-8, her karakteri bir ila dört bayt arasında değişen uzunluklarda kodlar.
Metinden bayta dönüşüm yapıldığında, çıktı olarak seçilen tabana göre (ikilik, sekizlik, onluk veya onaltılık) bayt değerleri üretilir. Çıktıların okunabilirliğini artırmak amacıyla belirli hizalama kuralları uygulanır:
| Sayı Tabanı | Dolgu (Padding) Kuralı | Örnek Çıktı Biçimi |
|---|---|---|
| İkilik (Binary) | 8 bit genişliğine tamamlayacak şekilde soluna sıfır eklenir. | 01000001 |
| Sekizlik (Octal) | 3 bit genişliğine tamamlayacak şekilde soluna sıfır eklenir. | 101 |
| Onaltılık (Hex) | 2 bit genişliğine tamamlayacak şekilde soluna sıfır eklenir ve büyük harf kullanılır. | 41 |
| Onluk (Decimal) | Herhangi bir sıfır dolgusu uygulanmaz. | 65 |
Baytlardan metne geri dönüşüm (kod çözme) yapılırken, girilen bayt değerleri boşluklarla veya virgüllerle ayrılabilir. Her bir değer, seçilen tabanda mutlaka tek bir baytı (0–255 aralığı) temsil etmelidir.
Hata Yönetimi ve Durum Bildirimleri
Araç, geçersiz girdileri engellemek ve kullanıcıyı bilgilendirmek için anlık doğrulama yapar. Hatalı durumlarda aşağıdaki hata mesajları gösterilir:
- Sayı modunda seçilen tabana ait olmayan bir karakter girildiğinde: "Bu taban için geçerli bir sayı değil — içeremeyeceği rakamları kontrol edin."
- Metin modunda 0–255 aralığının dışında veya geçersiz karakter içeren baytlar girildiğinde: "Geçerli bayt kodları değil — her değerin seçilen tabanda bir bayt (0–255) olması gerekir."
- Girilen bayt dizilimi geçerli bir UTF-8 karakterini oluşturmadığında: "Bu baytlar geçerli UTF-8 kodlamasına sahip olmadığından metin olarak gösterilemiyor."
- Girdi uzunluğu sınırları aştığında (metin girişi için maksimum sınır 200.000 karakterdir): "Bu araç için çok uzun — daha kısa bir girdi deneyin."
İşlem durumuna göre arayüzün alt kısmında yer alan durum göstergesi güncellenir. Giriş temizlendiğinde durum "Temizlendi.", sayı dönüştürüldüğünde "Dönüştürüldü.", metin bayta çevrildiğinde "Kodlandı." ve baytlar metne dönüştürüldüğünde "Kodu çözüldü." olarak değişir.
Yerel Tarayıcı Güvenliği ve Gizlilik
Bu araçla yapılan tüm işlemler doğrudan kullanıcının cihazında gerçekleşir. "Her dönüştürme tarayıcınızda çalışır. Sayılarınız ve metinleriniz cihazınızdan asla çıkmaz." Verileriniz hiçbir uzak sunucuya yüklenmez veya üçüncü taraflarla paylaşılmaz. Bu yerel çalışma prensibi, hassas teknik verilerle veya kaynak kod parçalarıyla çalışan uzmanlar için güvenli bir işlem ortamı sunar.
Sıkça Sorulan Sorular
Burada neleri dönüştürebilirim?
İki temel işlevi vardır. Sayı modu; ikilik, sekizlik, onluk ve onaltılık sayı sistemlerini birbirine bağlar — herhangi bir alanı düzenlediğinizde diğerleri anında güncellenir. Metin modu ise herhangi bir metni seçtiğiniz tabandaki bayt değerlerine dönüştürür ve bu baytları tekrar metne çevirir.
Negatif ve çok büyük sayıları destekliyor mu?
Evet. Negatif sayılar her tabanda başında bir eksi işareti bulundurur ve endişelenmeniz gereken bir boyut sınırı yoktur — değerler yuvarlama yapılmadan tam olarak dönüştürülür. Sabit genişlikli ikiye tümleyen (two's complement) görünümü yoktur, çünkü bu yalnızca bir bit genişliği seçtiğinizde anlam kazanır.
Girdilerim herhangi bir yere gönderiliyor mu?
Hayır. Her şey tarayıcınızda yerel olarak hesaplanır, yazdığınız hiçbir şey sunucuya gönderilmez.
Bayt kodlarını çözerken neden hata alıyorum?
Girdiğiniz bayt değerlerinin seçilen tabana uygun olduğundan ve her bir değerin 0 ile 255 arasında yer aldığından emin olun. Ayrıca, girilen bayt diziliminin geçerli bir UTF-8 karakter kodlaması oluşturması gerekir; aksi takdirde kod çözme işlemi başarısız olur.