Sayı Sistemleri Dönüşümleri: Negatif Sayı Desteğiyle

Bilgisayar dünyası sıfırlar ve birler üzerinde çalışır, ancak insanlar onluk sistemde düşünür. Peki ya programcılar? Onlar her ikisi arasındaki her şeyi anlamak zorundadır. İster düşük seviyeli kodda hata ayıklıyor, ister CSS’te renkleri ayarlıyor, IP maskelerini hesaplıyor veya bilgisayar bilimleri görevlerini çözüyor olun, sayıları sistemler arasında dönüştürme ihtiyacıyla karşılaşırsınız.

Windows’taki veya mobil cihazlardaki sıradan hesap makineleri genellikle yavaş ve kullanışsızdır. Akıllı sayı sistemi dönüştürücümüz, geliştiriciler tarafından geliştiriciler için tasarlanmıştır. Gerçek zamanlı anında dönüşüm, son derece büyük sayılar için destek sunar ve birkaç çevrimiçi araçtan biri olarak negatif sayıları ikili biçimde doğru bir şekilde işler.

Bu Sayı Sistemi Dönüştürücüsü Neleri Yapabilir?

Bu widget’ı geliştirirken, programcıların en yaygın sorunlarına çözüm bulmaya odaklandık:

  1. Gerçek Zamanlı Tepkisellik: “Hesapla” düğmesi yok. HEX alanına yazmaya başladığınızda BIN ve DEC’in nasıl değiştiğini anında görürsünüz.
  2. Negatif Sayı Desteği (İşaretli Tamsayılar): Çoğu çevrimiçi dönüştürücü -5 yazdığınızda başarısız olur. Bizde değil. Bit derinliği (8, 16, 32, 64 bit) seçeneği sayesinde, sözde ikili tümleme kullanarak işlemcinin tam davranışını simüle ederiz.
  3. İkili Kod Okunabilirliği: 1110101011011110’ye bakmak yorucu olabilir. Aracımız çıktıyı otomatik olarak 4 bitlik (nibble) boşluklarla 1110 1010 1101 1110 şeklinde biçimlendirebilir, bu da kopyalama sırasındaki hata oranını önemli ölçüde azaltır.
  4. BigInt Desteği: 64-bitlik bir sayı veya hash dönüştürmeniz mi gerekiyor? Standart JavaScript $2^{53}$ sayısında sona erer. Motorumuz “İşaretsiz” modunda keyfi uzunluktaki sayıları işleyebilir.

Sayı Sistemleri Rehberi: Hangisini Ne Zaman Kullanmalı?

1. Ondalık Sistem (DEC - Decimal)

  • Taban: 10 (rakamlar 0-9)
  • Kullanım: Günlük yaşam, finans, kodda döngü sayma.
  • İlginç Bilgi: Bilgisayarlar bunu anlamaz, ikiliye dönüştürmeleri gerekir.

2. İkili Sistem (BIN - Binary)

  • Taban: 2 (rakamlar 0, 1)
  • Kullanım: Makine kodu, mantık kapıları, IP adres maskeleme.
  • İpucu: Her rakam bir biti temsil eder. 8 bit, 1 bayt (Byte) oluşturur.

3. Onaltılık Sistem (HEX - Hexadecimal)

  • Taban: 16 (rakamlar 0-9, harfler A-F)
  • Kullanım: İkili kodun kompakt gösterimi. Tek bir HEX karakteri tam olarak 4 biti (nibble) temsil eder. İki karakter (örneğin FF) bir baytın tamamını temsil eder.
  • Örnekler:
    • Web renkleri: #FF5733 (Kırmızı, Yeşil, Mavi).
    • MAC adresleri: 00:1A:2B:3C:4D:5E.
    • Bellek dökümleri (Memory dumps).

4. Sekizli Sistem (OCT - Octal)

  • Taban: 8 (rakamlar 0-7)
  • Kullanım: Tarihsel olarak eski bilgisayarlar, günümüzde özellikle Linux izinleri (chmod).
  • Örnek: chmod 755 komutu rwx-rx-rx (okuma, yazma, çalıştırma) haklarını ayarlar.

Negatif Sayılarla Doğru Şekilde Nasıl Çalışılır?

Bu, dönüştürücümüzün en gelişmiş özelliğidir. Bilgisayar belleğinde “eksi” işareti diye bir şey yoktur. Bilgisayarın negatif bir sayıyı depolaması için en sık ikili tümleme (Two’s Complement) yöntemini kullanır.

Ancak negatif bir sayının dönüşüm sonucu, değişkenin ne kadar bit ayrıldığına bağlıdır. Bu nedenle, üst çubukta Bit Derinliği anahtarını bulacaksınız.

Örnek: -5 sayısı nasıl görünür?

Dönüştürücümüzde kendiniz deneyin:

  1. Derinliği 8-bit olarak ayarlayın.

    • DEC’e girin: -5.
    • HEX sonucu: FB.
    • BIN sonucu: 1111 1011.
    • Açıklama: $256 - 5 = 251$ (bu da FB’dir).
  2. Derinliği 16-bit olarak ayarlayın.

    • DEC’e girin: -5.
    • HEX sonucu: FFFB.
    • Açıklama: Daha fazla yerimiz olduğu için, “birler” soldaki kalan boşluğu doldurur.
  3. Derinliği Sadece Pozitif (Unsigned) olarak ayarlayın.

    • -5 girerseniz, alan kırmızıya dönecektir. Bu mod negatif sayıları desteklemez, çünkü sonsuz sayıda bir gerektirecektir.

Profesyonel ipucu: Renkler veya IP adresleriyle çalışıyorsanız, her zaman “Sadece Pozitif” modunu kullanın. C/C++ veya assembler ödevleri yapıyorsanız, 32-bit veya 64-bit’e geçin.


Hızlı Dönüşüm Tablosu (Kopya Kağıdı)

Hızlı referans için, her “BT uzmanının” ezbere bilmesi gereken temel değerleri burada sunuyoruz.

Ondalık (DEC)Onaltılık (HEX)İkili (BIN)Not
0000000Sıfır
1010001
100A1010
150F11114 bitin maksimum değeri (Nibble)
16100001 0000
1277F0111 1111İşaretli 8-bit (char) için maks değer
255FF1111 1111İşaretsiz 8-bit (bayt) için maks değer
65 535FFFF16-bit için maks değer

Sıkça Sorulan Sorular (SSS)

"Bit Derinliği" ne anlama gelir? Bir sayı için ne kadar bellek ayrıldığını belirler.
  • 8-bit: 0'dan 255'e kadar (veya -128'den 127'ye kadar) değerler. char veya byte tipine karşılık gelir.
  • 16-bit: 65.535'e kadar değerler. short tipine karşılık gelir.
  • 32-bit: Modern dillerde standart int.
  • 64-bit: Çok büyük sayılar için (long long, BigInt).
Neden 255 sayısı HEX'te FF olarak yazılır? Onaltılık sistemde 16 rakam (0-9 ve A-F) bulunur ve F'nin değeri 15'tir. FF sayısı şöyle hesaplanır: $(15 \times 16^1) + (15 \times 16^0) = 240 + 15 = 255$.
HEX rengini RGB'ye nasıl dönüştürürüm? Webdeki bir renk, örneğin #E05412, üç bayttan oluşur: Kırmızı (E0), Yeşil (54), Mavi (12). Dönüştürücümüze HEX alanına "E0" girin -> 224 alırsınız. "54" girin -> 84 alırsınız. "12" girin -> 18 alırsınız. Sonuç rgb(224, 84, 18).
0x, 0b veya 0o önekleri ne anlama gelir? Programcılar sistemleri ayırt etmek için önekler kullanır:
  • 0x = Onaltılık (örn. 0xFF)
  • 0b = İkili (örn. 0b101)
  • 0o = Sekizli (örn. 0o755)
Dönüştürücümüz bu gösterimleri tanır, ancak yazmak zorunlu değildir.
Alanım neden kırmızıya döndü? Bu bir giriş doğrulama fonksiyonudur. Bu, belirtilen sisteme ait olmayan bir karakter girdiğiniz anlamına gelir. Örneğin:
  • HEX'e "G" harfi (sadece A-F izin verilir).
  • BIN'e "2" rakamı (sadece 0 ve 1 izin verilir).
  • OCT'ye "8" rakamı (sadece 0-7 izin verilir).
Yazım hatasını düzeltin ve hesaplama devam edecektir.