Byte Hesaplayıcı

Giriş Değeri:
Byte Tipi: ->

Çıktı Değeri:
0


📚 Algoritma Nasıl Çalışıyor?

Byte Birimleri ve Dönüşüm

Bilgisayar biliminde veri boyutları her zaman 1024 (2¹⁰) ile çarpılır veya bölünür:

  • 1 Byte = 1 byte
  • 1 KiloByte (KB) = 1024 bytes
  • 1 MegaByte (MB) = 1024 KB = 1,048,576 bytes
  • 1 GigaByte (GB) = 1024 MB = 1,073,741,824 bytes
  • 1 TeraByte (TB) = 1024 GB = 1,099,511,627,776 bytes

1. Birimler Arası İlişki

Her birim, bir öncekinin 1024 katıdır. Bu yüzden üstel fonksiyon kullanırız:

const byteValues = ['Byte', 'KiloByte', 'MegaByte', 'GigaByte', 'TeraByte'];
// Index:      0          1           2           3           4
// Çarpan:    1          1024        1024²       1024³       1024⁴

2. Dönüşüm Algoritması

Ana Fikir: Birimler arası fark, üstel çarpanı belirler

function calculate() {
  // Kaynak ve hedef birimlerin index farkını bul
  const difference = from.selectedIndex - to.selectedIndex;
  
  // Fark pozitifse (büyükten küçüğe): çarp
  // Fark negatifse (küçükten büyüğe): böl (çarpmanın tersi)
  const result = data.value * Math.pow(1024, difference);
  
  return result;
}

3. Adım Adım Örnekler

Örnek 1: MB → KB (Büyükten Küçüğe)

// 5 MB → KB
// from.selectedIndex = 2 (MB)
// to.selectedIndex = 1 (KB)
// difference = 2 - 1 = 1

// 5 × 1024¹ = 5 × 1024 = 5120 KB

Örnek 2: KB → GB (Küçükten Büyüğe)

// 1048576 KB → GB
// from.selectedIndex = 1 (KB)
// to.selectedIndex = 3 (GB)
// difference = 1 - 3 = -2

// 1048576 × 1024⁻² = 1048576 / (1024 × 1024) = 1 GB

Örnek 3: Aynı Birim (Fark = 0)

// 5 MB → MB
// difference = 0
// 5 × 1024⁰ = 5 × 1 = 5 MB

4. Math.pow() Kullanımı

Math.pow(1024, difference) fonksiyonu 1024'ü "difference" üssüne yükseltir:

Math.pow(1024, 0)  // 1
Math.pow(1024, 1)  // 1024
Math.pow(1024, 2)  // 1,048,576
Math.pow(1024, 3)  // 1,073,741,824
Math.pow(1024, -1) // 0.0009765625 (1/1024)
Math.pow(1024, -2) // 0.000000953674316 (1/1048576)

5. Input Validation

Kullanıcının sadece sayı ve ondalık nokta girmesine izin verilir:

// Regex: /^\d*\.?\d*$/
// ^        → Başlangıç
// \d*      → 0 veya daha fazla rakam
// \.?      → 0 veya 1 ondalık nokta
// \d*      → 0 veya daha fazla rakam
// $        → Son

// Geçerli: "5", "10.5", "123.456"
// Geçersiz: "abc", "5.5.5", "-10"

Önemli Noktalar

  • 1024 vs 1000: Bilgisayar biliminde 1024, SI birimlerinde 1000 kullanılır
  • Üstel Hesaplama: Fark ne kadar büyükse, çarpan o kadar büyük olur
  • Negatif Üs: Küçük birimden büyük birime geçerken bölme yapılır
  • Ondalık Sayılar: Sonuç ondalık olabilir (örn: 1.5 GB)