Bölüm 1.1: Bilgisayarlar

Bölüm 1.1: Bilgisayarlar · Çalışma Soruları
Temel parçalarTaban dönüşümleriİkiye tümleyenTaşmaKayan noktaKarakter kodlarıUnicode ve UTF-8Saklanan programvon Neumann
Sercan KÜLCÜ · Giresun Üniversitesi · Bilgisayar Mühendisliği

Çoktan Seçmeli · Bilgisayarın Temelleri

Soru 1: Temel Parçalar

Bir bilgisayarın temel parçalarıyla ilgili hangisi doğrudur?

B: İşlemci hesaplar (ALU, kontrol birimi, yazmaçlar); RAM çalışan programı ve verisini geçici olarak tutar, elektrik kesilince silinir. Disk büyük, yavaş ve kalıcıdır: mutfak benzetmesindeki kiler. A rolleri ters çevirir; C diski önbellekle karıştırır; D diskin kalıcılığını yok sayar.

Çıktı Sorusu · Sayılar

Soru 2: Taban Dönüşümleri

Program ne yazdırır?

System.out.println(Integer.toBinaryString(45));
System.out.println(Integer.toHexString(171));
System.out.println(Integer.parseInt("777", 8));
System.out.println(0x1F + 010);
Cevabı göster
101101
ab
511
39

45 = 32 + 8 + 4 + 1 → 101101. 171 = 10·16 + 11 → ab (toHexString küçük harf yazar).

777₈ = 7·64 + 7·8 + 7 = 511. 0x1F = 31, 010 başta sıfır olduğu için sekizlidir: 8 → 31 + 8 = 39.

Adım Adım Çalıştırma · Sayılar

Soru 3: Ondalıktan İkiliye: 22

Kod 22 için ne yazdırır? Döngü kaç tur döner?

ikili:sayi:22

sayi = 22, sonuç dizgisi boş başlar.

ikili:0sayi:11

Koşul doğru. kalan = 22 % 2 = 0 dizginin önüne eklenir → "0"; sayi = 22 / 2 = 11.

ikili:10sayi:5

Koşul doğru. kalan = 11 % 2 = 1 dizginin önüne eklenir → "10"; sayi = 11 / 2 = 5.

ikili:110sayi:2

Koşul doğru. kalan = 5 % 2 = 1 dizginin önüne eklenir → "110"; sayi = 5 / 2 = 2.

ikili:0110sayi:1

Koşul doğru. kalan = 2 % 2 = 0 dizginin önüne eklenir → "0110"; sayi = 2 / 2 = 1.

ikili:10110sayi:0

Koşul doğru. kalan = 1 % 2 = 1 dizginin önüne eklenir → "10110"; sayi = 1 / 2 = 0.

ikili:10110sayi:0

0 > 0 yanlış, döngü 5 turda biter. 22 = 16 + 4 + 2 → 10110. Kalan önce eklendiği için bitler doğru sırada durur.

int sayi = 22;
String ikili = "";
while (sayi > 0) {
    int kalan = sayi % 2;
    ikili = kalan + ikili;
    sayi = sayi / 2;
}
System.out.println(ikili);

Çoktan Seçmeli · Sayılar

Soru 4: −20 İkiye Tümleyen Gösteriminde

−20 sayısının 8 bitlik ikiye tümleyen gösterimi hangisidir?

D: 20 = 00010100 → bitler ters çevrilir: 11101011 (B, birler tümleyeni) → 1 eklenir: 11101100. Sağlama: 11101100 işaretsiz 236 = 256 − 20. A yalnızca işaret bitini 1 yapar (işaret-büyüklük gösterimi); C +20'dir.

Çıktı Sorusu · Sayılar

Soru 5: Taşma

Program ne yazdırır?

byte b = 126;
b++;
b++;
System.out.println(b);
int m = Integer.MAX_VALUE;
System.out.println(m + 2);
short s = (short) 40000;
System.out.println(s);
System.out.println((byte) 0b10110110);
Cevabı göster
-128
-2147483647
-25536
-74

byte en fazla 127'dir: 126 → 127 → −128 (başa sarar). MAX_VALUE + 2 = −2147483648 + 1.

40000, 16 bitlik short'a sığmaz: 40000 − 65536 = −25536. 10110110₂ = 182; en soldaki bit 1 → 182 − 256 = −74. Java taşmada hata vermez.

Hata Bulma · Sayılar

Soru 6: Hangi Satır Derlenmez?

Her satır ayrı bir programda deneniyor. Hangileri derlenmez, neden? Derlenen satırda z kaçtır?

byte b = 200;            // (1)
long x = 3000000000;     // (2)
char c = "A";            // (3)
int y = 08;              // (4)
int z = 010;             // (5)
Cevabı göster
  • (1) possible lossy conversion from int to byte: byte en fazla 127.
  • (2) integer number too large: sabit int sayılır; doğrusu 3000000000L.
  • (3) String cannot be converted to char: karakter tek tırnakla yazılır, 'A'.
  • (4) ';' expected: başta 0 sekizlik demektir, sekizlikte 8 rakamı yoktur.
  • (5) derlenir: 010 sekizlik 10 = 8.

Çoktan Seçmeli · Harf ve Dizgiler

Soru 7: UTF-8 Bayt Sayısı

Kod hangi iki sayıyı yazdırır?

String k = "çiğdem";
System.out.println(k.length() + " "
    + k.getBytes(StandardCharsets.UTF_8).length);

C: length() char sayısıdır: ç-i-ğ-d-e-m = 6. UTF-8'de ASCII harfleri 1, ç (U+00E7) ve ğ (U+011F) 2'şer bayttır: 4 + 2 + 2 = 8. D her karakteri 2 bayt sayar (UTF-16 gibi); A her harfi 1 bayt sanır.

Adım Adım Çalıştırma · Harf ve Dizgiler

Soru 8: Harfleri Kaydırmak

Program ne yazdırır? ('K' = 75, 'e' = 101, 'd' = 100, 'i' = 105)

kelimeK75e101d100i105sonuc

Dizginin her harfi bir sayıdır (altta kodları).

kelimeK75e101d100i105sonucN78

charAt(0) = 'K' (75). ch + 3 int verir: 78; (char) ile 'N' olur ve sona eklenir.

kelimeK75e101d100i105sonucN78h104

charAt(1) = 'e' (101). ch + 3 int verir: 104; (char) ile 'h' olur ve sona eklenir.

kelimeK75e101d100i105sonucN78h104g103

charAt(2) = 'd' (100). ch + 3 int verir: 103; (char) ile 'g' olur ve sona eklenir.

kelimeK75e101d100i105sonucN78h104g103l108

charAt(3) = 'i' (105). ch + 3 int verir: 108; (char) ile 'l' olur ve sona eklenir.

kelimeK75e101d100i105sonucN78h104g103l108

i = 4 < 4 yanlış, döngü biter: Nhgl. Her harf alfabede 3 ileri kaydı (Sezar şifresi).

String kelime = "Kedi";
String sonuc = "";
for (int i = 0; i < kelime.length(); i++) {
    char ch = kelime.charAt(i);
    int kod = ch + 3;
    sonuc = sonuc + (char) kod;
}
System.out.println(sonuc);

Çıktı Sorusu · Harf ve Dizgiler

Soru 9: Emoji ve length()

Program ne yazdırır? (€ = U+20AC, 😀 = U+1F600)

String s = "A€😀";
System.out.println(s.length());
System.out.println(
    s.codePointCount(0, s.length()));
System.out.println(
    s.getBytes(StandardCharsets.UTF_8).length);
Cevabı göster
4
3
8

Java String'i UTF-16 tutar: A ve € birer char, U+FFFF'in üstündeki 😀 iki char (vekil çift) → length() = 4.

Kod noktası 3 tanedir. UTF-8 baytları: A 1, € 3 (U+0800–U+FFFF), 😀 4 → 8.

Çıktı Sorusu · Yapılandırılmış Bilgi

Soru 10: Bir Resim Kaç Bayt?

800 × 600 piksellik, piksel başına 3 bayt (R, G, B) kullanan sıkıştırmasız bir resim için program ne yazdırır?

long piksel = 800L * 600;
long bayt = piksel * 3;
System.out.println(bayt);
System.out.println(bayt / 1024 + " KiB");
int yanlis = 100000 * 100000;
System.out.println(yanlis);
long dogru = 100000L * 100000;
System.out.println(dogru);
Cevabı göster
1440000
1406 KiB
1410065408
10000000000

800 · 600 = 480 000 piksel, × 3 = 1 440 000 bayt; 1 440 000 / 1024 = 1406 (tam sayı bölmesi, kesir atılır).

100000 · 100000 = 10¹⁰ int'e sığmaz; 2³²'ye göre kalan 1410065408 yazılır, hata yoktur. 100000L çarpımı long yapar.

Çoktan Seçmeli · Saklanan Program

Soru 11: Bellek Hiyerarşisi

Erişim hızına göre en hızlıdan en yavaşa doğru sıralama hangisidir?

A: Yazmaçlar işlemcinin içindedir ve en hızlısıdır; L1, L2 (ve L3) önbellekler işlemciye yakın, küçük ve hızlıdır; RAM büyük ama daha yavaş, disk en büyük ve en yavaştır. D aynı sırayı tersten verir. Hız arttıkça boyut küçülür, maliyet artar.

Çoktan Seçmeli · Saklanan Program

Soru 12: Adres Yolu

Bir işlemcinin adres yolu 16 hatlıdır ve her adres bir bayt seçer. En fazla kaç bayt bellek adreslenebilir?

C: 16 hat 2¹⁶ = 65 536 farklı adres seçer: 64 KiB. B 2¹⁵'tir; D 32 hatlı yolun sınırıdır (2³² bayt). Veri yolu değeri taşır, kontrol yolu “oku/yaz” bilgisini.

Adım Adım Çalıştırma · Saklanan Program

Soru 13: Atlamalı Oyuncak Program

Oyuncak bilgisayar 200. adresten başlıyor ([x]: x adresindeki değer). Program bitince bellek[209]'da ne vardır, PC kaçtır?

PC200IR—R10502062520782080209bellek (veri)

Program ve veriler aynı bellekte. PC = 200.

PC201IRLOAD 206R150502062520782080209bellek (veri)

Getir: 200'deki komut IR'ye, PC 201 olur. Yürüt: bellek[206] = 50 → R1.

PC203IRJUMP 203R150502062520782080209bellek (veri)

Getir: PC önce 202 olur. Yürüt: JUMP PC'yi 203 yapar; 202'deki ADD hiç çalışmaz.

PC204IRSUB 208R142502062520782080209bellek (veri)

Getir: PC 204. Yürüt: ALU 50 − 8 = 42 hesaplar, R1'e yazar.

PC205IRSTORE 209R1425020625207820842209bellek (veri)

Getir: PC 205. Yürüt: R1 = 42 bellek[209]'a yazılır (kontrol yolu: “yaz”).

PC206IRHALTR1425020625207820842209bellek (veri)

Getir: PC 206. HALT: işlemci durur. bellek[209] = 42, PC = 206.

200: LOAD  R1, [206]   ; R1 ← [206]
201: JUMP  203         ; PC ← 203
202: ADD   R1, [207]   ; R1 ← R1 + [207]
203: SUB   R1, [208]   ; R1 ← R1 − [208]
204: STORE R1, [209]   ; [209] ← R1
205: HALT              ; dur
206: 50
207: 25
208: 8
209: 0

Çoktan Seçmeli · von Neumann Mimarisi

Soru 14: von Neumann ve Harvard

von Neumann mimarisini Harvard mimarisinden ayıran özellik hangisidir?

D: Saklanan program fikrinde komut da veri de sayıdır ve aynı bellekte, aynı veri yolundan taşınır; bu tek yol von Neumann darboğazını doğurur. Harvard mimarisinde (ör. AVR mikrodenetleyiciler) komut ve veri belleği ayrıdır. C, ENIAC'ın elle kablolanmasıdır.

Kod Okuma · von Neumann Mimarisi

Soru 15: Komut Kodlama

Oyuncak bilgisayarda 8 bitlik komut: 2 bit işlem kodu (00 topla, 01 çıkar, 10 çarp, 11 böl), 2 bit hedef, 2'şer bit iki kaynak yazmaç. (a) Kod ne yazdırır? (b) 01101110 ne yapar? (c) “R2 ← R3 × R1” komutu nasıl kodlanır?

int komut = 0b01101110;
System.out.println(komut);
System.out.println(komut / 64 + " "
    + (komut / 16) % 4 + " "
    + (komut / 4) % 4 + " " + komut % 4);
Cevabı göster
110
1 2 3 2

(a) 01101110₂ = 64 + 32 + 8 + 4 + 2 = 110. 110 / 64 = 1; 110 / 16 = 6, 6 % 4 = 2; 110 / 4 = 27, 27 % 4 = 3; 110 % 4 = 2.

(b) 01 = çıkar, hedef R2, kaynaklar R3 ve R2: R2 ← R3 − R2.

(c) 10 · 10 · 11 · 01 → 10101101 (= 173).

Son

Bölüm 1.1: Bilgisayarlar: Çalışma Soruları
Konu anlatımı: Bilgisayarlar sunumu · Terim sözlüğü
1 / 1 Sercan KÜLCÜ, Tüm hakları saklıdır.