Bölüm 2 · Simülatör

İlkel Tipler Laboratuvarı

← Bölüm 2
Java kodu
Çıktı

Bit düzeyi

İlkel Tipler Laboratuvarı

Amaç: Java'nın yedi sayısal ilkel tipinin (byte, short, char, int, long, float, double) bir ifadede nasıl davrandığını değer ve bit düzeyinde görmek.

Nasıl kullanılır?

  1. Bir hazır örnek seçin ya da a ve b değişkenlerinin tipini ve değerini, işlemi ve sonucun atanacağı r değişkeninin tipini kendiniz belirleyin. char için tek bir karakter yazılır.
  2. açık dönüşüm (tip) işaretliyse ifade (tip) ile dönüştürülerek atanır; değilse yalnızca örtük genişletme yapılabilir, daraltma derleme hatası verir.
  3. Kod, çıktı, açıklama ve bit düzeyi her değişiklikte güncellenir: a, b, ifadenin değeri ve r. Daraltmada atılan üst bitler soluk ve üstü çizili görünür; float/double için işaret, üs ve anlamlı kısım ayrı renklerdedir.
  4. Kendini dene açıkken çıktı gizlenir; seçeneklerden birini seçerek tahmin edersiniz.

Kurallar

  • Sayısal yükseltme: iki işlenenli aritmetikte byte, short, char önce int'e yükseltilir; işlenenlerden biri long, float ya da double ise ifade o tipte hesaplanır. Bu yüzden byte + byte bir int'tir.
  • Taşma: tam sayı işlemleri sonucun tipine sığmazsa hata vermez; fazla bitler atılır ve değer sarar (Integer.MAX_VALUE + 1 → -2147483648). Taşma, sonuç daha geniş bir değişkene atanmadan önce olur.
  • Tam sayı bölmesi kesirli kısmı atar (sıfıra doğru); % işleminde sonucun işareti bölünenin işaretidir. Tam sayıyı sıfıra bölmek ArithmeticException fırlatır; float/double ise Infinity ya da NaN verir.
  • Genişletme (ör. int → long) örtüktür; int/long → float ile long → double genişletme olduğu hâlde yuvarlama yapabilir. Daraltma (ör. int → byte) (byte) gibi açık dönüşüm ister: tam sayılarda yalnızca alttaki bitler kalır; ondalıklı sayıdan tam sayıya dönüşümde kesirli kısım atılır, aralık dışı değerler en büyük ya da en küçük değere sabitlenir, NaN 0 olur. byte ↔ char ve short ↔ char her iki yönde de açık dönüşüm ister.
  • char 16 bitlik işaretsiz bir sayıdır: 'A' + 1 = 66 (int), (char) ('A' + 1) = B. char tipindeki bir değişken yazdırılınca karakter, sayı tipindeki yazdırılınca sayı görünür.

Gösterilen tüm çıktılar ve derleme hataları, örnekler ve binlerce rastgele girdi için javac --release 8 + java çıktısıyla karşılaştırılarak doğrulanmıştır. Yazdırılamayan karakterler (kontrol karakterleri) kodlarıyla gösterilir.

İlgili sunum: Bölüm 2 · Söz Dizimi Kuralları.