Sayı tabanı (radix) nedir ve programlamada neden önemlidir?
Sayı tabanı (veya radix), bir konumsal sayı sisteminde kullanılan benzersiz hane sayısını tanımlar. 10 tabanı (decimal) 0-9 hanelerini; 2 tabanı (binary) 0-1 hanelerini; 16 tabanı (hexadecimal) ise 0-9 ile A-F hanelerini kullanır. Programlamada binary, ham makine verilerini temsil eder; sekizlik, Unix dosya izinlerinde (örneğin chmod 755) kullanılır; onaltılık ise bellek adresleri, renk kodları (#FF5733) ve bayt düzeyinde veri incelemesi için standarttır. Sayı tabanlarını anlamak; hata ayıklama, ağ programlama ve düşük seviyeli geliştirme için temel bir beceridir.
Sayı tabanları arasında elle nasıl dönüşüm yapılır?
Herhangi bir tabandan decimal'e dönüştürmek için her haneyi konumunun (sağdan sola, 0'dan başlayarak) tabana eşit kuvvetiyle çarpın ve sonuçları toplayın. Örneğin, binary 1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8+0+2+1 = 11. Decimal'den başka bir tabana dönüştürmek için sayıyı hedef tabana sürekli olarak bölün ve kalanları ters sırada toplayın. Örneğin, decimal 255'i hex'e çevirme: 255÷16 = 15 kalan 15, sonuç FF olur.
Bu sayı tabanı dönüştürücüsünü kullanırken verilerim güvende mi?
Evet, tamamen. Tüm dönüşümler JavaScript kullanılarak yerel olarak tarayıcınızda çalışır. Hiçbir veri sunucuya gönderilmez — ağ isteği, çerez, girdiniz üzerinde analiz veya veri depolama yoktur. Sayılarınız cihazınızdan asla ayrılmaz. Bu araç; bellek adresleri veya tescilli bayt dizileri gibi hassas verileri dönüştürmek için idealdir.
Base 36 sayı sistemi nedir ve nerelerde kullanılır?
Base 36, en geniş alfasayısal tabandır; 0-9 hanelerini ve A-Z harflerini kullanır (A=10'dan Z=35'e kadar). URL kısaltıcılarda (örneğin YouTube video kimlikleri), kompakt benzersiz tanımlayıcılarda, veritabanı birincil anahtarlarında ve büyük sayıların kısa, insan tarafından okunabilir dizilere kodlanmasında yaygın olarak kullanılır. Örneğin, decimal 1.000.000 sayısı base 36'da LFLS olur — çok daha kısa ve paylaşması daha kolaydır. Base 36 özellikle web geliştirmede slug dostu tanımlayıcılar üretmek için popülerdir; kompakt ve büyük-küçük harfe duyarsız oldukları için URL'ler ve kısa kodlar için idealdir.
İşaretli ve işaretsiz sayı gösterimi arasındaki fark nedir?
İşaretsiz (unsigned) sayılar yalnızca negatif olmayan değerleri (0 ve pozitif) temsil eder. İşaretli (signed) sayılar hem pozitif hem de negatif değerleri temsil edebilir; bilgisayarlarda genellikle ikiye tümleyen (two's complement) kodlamasıyla saklanır. İkiye tümleyen biçimde en anlamlı bit işareti gösterir: 0 pozitif, 1 negatif demektir. Örneğin, 8-bit unsigned'da aralık 0-255'tir; 8-bit signed (ikiye tümleyen) ise -128 ile 127 arasındadır.
Programcılar neden binary yerine hexadecimal kullanır?
Hexadecimal, ikilik verinin kompakt bir gösterimidir: her hex hanesi tam olarak 4 ikilik bite (bir nibble'a) eşlenir. Bu, hex'i uzun ikilik dizilerden çok daha kolay okunur ve yazılır kılar. Örneğin, 11111111 00001010 ikilik değeri hex'te basitçe FF0A olur. Hex; bellek adresleri, renk kodları (CSS #FF5733), MAC adresleri (00:1A:2B:3C:4D:5E) ve UUID biçimlendirmesinde standarttır.
Bu araç çok büyük sayıları işleyebilir mi?
Evet. Bu araç, keyfi hassasiyetli (arbitrary-precision) tamsayı aritmetiği için JavaScript'in BigInt türünü kullanır; bu nedenle hane sayısında üst sınır yoktur. 2 ile 36 arasındaki herhangi iki taban arasında, yüzlerce hatta binlerce hane içeren sayıları hassasiyet kaybı olmadan dönüştürebilirsiniz. JavaScript'in yerleşik Number türü 53-bit tamsayılarla (en fazla 9.007.199.254.740.991) sınırlıdır; ancak BigInt bu sınırı tamamen kaldırır. Kriptografik özetlerle, büyük veritabanı kimlikleriyle veya bilimsel hesaplamalarla çalışıyor olun, bu araç hepsini doğru biçimde işler.
Binary'den hexadecimal'e elle nasıl dönüşüm yapılır?
En basit yöntem 4-bitlik gruplama tekniğidir. En sağdaki bitten başlayarak ikilik sayıyı 4 hanelik gruplara (nibble denir) bölün. Gerekirse en soldaki grubu öne sıfır ekleyerek tamamlayın. Ardından her grubu dönüştürmek için şu eşleme tablosunu kullanın: 0000=0, 0001=1, 0010=2, 0011=3, 0100=4, 0101=5, 0110=6, 0111=7, 1000=8, 1001=9, 1010=A, 1011=B, 1100=C, 1101=D, 1110=E, 1111=F. Örneğin, ikilik 10101111, 1010 ve 1111 olarak ayrılır; bunlar A ve F'ye eşlenir ve sonuç hex AF olur. Bu yöntem işe yarar çünkü 16, 2'nin bir kuvvetidir (16 = 2⁴); dolayısıyla her hex hanesi tam olarak 4 ikilik haneye karşılık gelir.
Negatif bir sayıyı tabanlar arasında nasıl dönüştürürüm?
Bilgisayarlarda negatif sayılar tipik olarak ikiye tümleyen (two's complement) kullanılarak gösterilir. Bu sistemde en anlamlı bit (MSB) işaret biti olarak çalışır: pozitifte 0, negatifte 1. Bir sayının ikiye tümleyenini bulmak için tüm bitleri ters çevirin (0'ları 1, 1'leri 0 yapın) ve 1 ekleyin. Örneğin, 8-bit ikilikte -5'i temsil etmek için: 5 ile başlayın (00000101), ters çevirin ve 11111010 elde edin, 1 ekleyerek 11111011 bulun. Yani -5, 8-bit ikiye tümleyende ikilik 11111011 veya hex FB olur. Bir n-bit ikiye tümleyen sayının aralığı -2^(n-1) ile 2^(n-1)-1 arasındadır. Bu araç sayının büyüklüğünü dönüştürür; işaretli gösterimler için ikiye tümleyeni manuel olarak uygulamanız gerekir.
Hexadecimal ve decimal arasındaki fark nedir?
Decimal (10 tabanı) on hane (0-9) kullanır ve insanların en aşina olduğu günlük sayı sistemidir. Hexadecimal (16 tabanı) on altı sembol (0-9 ve A-F) kullanır ve bilgi işlemde tercih edilen biçimdir. Asıl fark basamak değerlerindedir: decimal'de her konum 10'un kuvvetlerini (1, 10, 100, 1000…) temsil ederken, hexadecimal'de her konum 16'nın kuvvetlerini (1, 16, 256, 4096…) temsil eder. Örneğin, decimal 255 sayısı hex'te FF'dir; çünkü 15×16 + 15×1 = 255. Hexadecimal programlamada tercih edilir çünkü ikiliğe sorunsuz şekilde eşlenir — her hex hanesi tam olarak 4 biti temsil eder — bu da onu bellek adresleri, renk kodları ve bayt düzeyinde veriler için ideal kılar.
Bilgisayarlar neden decimal yerine binary kullanır?
Bilgisayarlar binary (2 tabanı) kullanır çünkü temel yapı taşları olan transistörler, iki durumlu elektronik anahtar gibi çalışır: açık (1) ve kapalı (0). Bu, ikilik hanelere mükemmel biçimde eşlenir. Decimal haneleri temsil etmek, 10 farklı gerilim seviyesini güvenilir biçimde ayırt edebilen devreler gerektirir; bu da yalnızca 2 durumu ayırmaktan çok daha karmaşık ve hataya açıktır. Binary aynı zamanda Boolean mantığıyla (doğru/yanlış) doğal olarak uyumludur ve bu mantık tüm bilgisayar işlemlerinin temelini oluşturur. Erken dönem bilgisayarlar üçlü (3 tabanı) ve decimal sistemleri denese de elektronik devrelerde sadelik, güvenilirlik ve gürültü toleransının en iyi bileşimini sunduğu için binary öne çıkmıştır.
Unix dosya izinleri neden sekizlik tabanda gösterilir?
Unix dosya izinleri üç kategori — sahip, grup ve diğerleri — kullanır; her kategorinin üç izin biti vardır: okuma (r=4), yazma (w=2) ve çalıştırma (x=1). 3 bit 0-7 değerlerini temsil edebildiği için her kategori tek bir sekizlik haneye mükemmel biçimde eşlenir. Örneğin, 755 izni şu anlama gelir: sahip rwx (7 = 4+2+1), grup r-x (5 = 4+0+1) ve diğerleri r-x (5 = 4+0+1). Sekizlik doğal bir seçimdir çünkü her hane tam olarak bir izin grubunu kodlar. Binary'de 755, 111 101 101 olur; bu doğrudan rwx bit desenini gösterir. Bu zarif 3-bit-tek-hane eşlemesi, chmod komutunun neden sekizlik gösterim kullandığını açıklar.
Hexadecimal renkler web geliştirmede nasıl kullanılır?
Web geliştirmede renkler genellikle #RRGGBB hex biçiminde belirtilir; her hex hane çifti bir renk kanalını (kırmızı, yeşil, mavi) temsil eder. Her kanal 00 (0, hiç yoğunluk yok) ile FF (255, tam yoğunluk) arasında değer alır. Örneğin, #FF5733 kırmızı=FF (255), yeşil=57 (87), mavi=33 (51) anlamına gelir ve canlı bir turuncu-kırmızı oluşturur. Ayrıca kısa bir gösterim de vardır — #F00, #FF0000'a (saf kırmızı) genişler. Modern CSS, alfa saydamlık için #RRGGBBAA gösterimini de destekler; AA, 00 (tamamen saydam) ile FF (tamamen opak) arasında değişir. Hexadecimal kullanılır çünkü iki hex hanesi tam olarak bir baytı (0-255) temsil eder; bu da renk değerleri için kompakt ve okunabilir bir biçim sağlar.
Ağ programlamada sayı tabanı dönüşümünün pratik uygulamaları nelerdir?
Sayı tabanı dönüşümü; IP adresleri, alt ağ maskeleri ve MAC adresleriyle çalışırken ağ programlamada vazgeçilmezdir. 192.168.1.1 gibi IPv4 adresleri decimal yazılır, ancak alt ağ hesaplamaları binary gerektirir. Örneğin, /24 alt ağ maskesi binary olarak 11111111.11111111.11111111.00000000, decimal olarak 255.255.255.0'dır. Ağ mühendisleri, ağ adresini belirlemek için IP adresini ve alt ağ maskesini ikilik tabanda Bitwise AND işlemine sokar. MAC adresleri hexadecimal gösterim kullanır (örneğin 00:1A:2B:3C:4D:5E); çünkü her hex çifti bir baytı temsil eder. Sayı tabanı dönüşümünü anlamak; alt ağ hesaplaması, yönlendirme sorunlarının çözümü ve paket yakalamalarının analizi için size yardımcı olur.
Bu araç, programlama dillerindeki yerleşik dönüşüm fonksiyonlarına kıyasla nasıl?
Programlama dilleri yerleşik dönüşüm fonksiyonları sunar — JavaScript'te parseInt() ve toString(), Python'da bin(), oct(), hex() ve int() vardır. Ancak bu araç birkaç avantaj sağlar: tüm yaygın tabanlara aynı anda dönüştürür ve sonuçlar gerçek zamanlı güncellenir; hiçbir kod kurulumu gerektirmez; tek bir arayüzde 2-36 arası herhangi bir tabanı destekler; ve bazı dillerin varsayılan türlerinin sunduğunun ötesinde keyfi hassasiyet için BigInt kullanır. Hızlı bakış için, kodunuzun çıktısını doğrulamak için, sayı tabanı dönüşüm kavramlarını görsel olarak öğrenmek için ve dilin yerleşik fonksiyonları tarafından doğrudan desteklenmeyen tabanlarla çalışmak için idealdir. Üretim kodunda dilinizin yerel fonksiyonlarını kullanın; keşif ve hata ayıklama için bu araç daha hızlı ve daha kullanışlıdır.