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:
- 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.
- Negatif Sayı Desteği (İşaretli Tamsayılar): Çoğu çevrimiçi dönüştürücü
-5yazdığı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. - İkili Kod Okunabilirliği:
1110101011011110’ye bakmak yorucu olabilir. Aracımız çıktıyı otomatik olarak 4 bitlik (nibble) boşluklarla1110 1010 1101 1110şeklinde biçimlendirebilir, bu da kopyalama sırasındaki hata oranını önemli ölçüde azaltır. - 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).
- Web renkleri:
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 755komutu 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:
-
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).
- DEC’e girin:
-
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.
- DEC’e girin:
-
Derinliği Sadece Pozitif (Unsigned) olarak ayarlayın.
-5girerseniz, 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 |
|---|---|---|---|
| 0 | 00 | 0000 | Sıfır |
| 1 | 01 | 0001 | |
| 10 | 0A | 1010 | |
| 15 | 0F | 1111 | 4 bitin maksimum değeri (Nibble) |
| 16 | 10 | 0001 0000 | |
| 127 | 7F | 0111 1111 | İşaretli 8-bit (char) için maks değer |
| 255 | FF | 1111 1111 | İşaretsiz 8-bit (bayt) için maks değer |
| 65 535 | FFFF | … | 16-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.
charveyabytetipine karşılık gelir. - 16-bit: 65.535'e kadar değerler.
shorttipine 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)
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).