Bölüm 1.3: Bilgisayarlar
Çoktan Seçmeli · Veri Temsili
Soru 1: Büyük Harften Küçüğe
Sunumdaki programda büyük harfin koduna 32 (00100000) eklenerek küçük harf elde ediliyordu (“A” 65 → “a” 97). “G” harfinin kodu 71’dir. Program hangi kodu üretir ve ekranda ne görünür?
B: 71 + 32 = 103 = “g”. Bit düzeyinde 01000111 + 00100000 = 01100111: büyük ve küçük harf yalnızca 32’ler basamağındaki bitte ayrılır. Aynı bit dizisinin harf olduğunu kodlama (ASCII) söyler.
Adım Adım Çalıştırma · Taban Dönüşümü
Soru 2: 214’ü Sekizli ve Onaltılığa
11010110₂ (= 214) sayısı bitler gruplanarak sekizli ve onaltılık tabana çevriliyor. Her adımda gruplar ve basamaklar ne olur?
8 = 2³ olduğu için bitler 3’erli, 16 = 2⁴ olduğu için 4’erli gruplanır.
Gruplama sağdan başlar; en soldaki eksik grup 0 ile tamamlanır: 11 → 011.
011 = 3, 010 = 2, 110 = 6 → 326₈.
Sekizlide basamak değerleri 64, 8, 1’dir. 214 ✓
Şimdi 4’erli gruplar: 1101 ve 0110.
1101 = 13 = D, 0110 = 6 → D6₁₆.
Kontrol ✓. Sekizli ve onaltılık, uzun ikili sayıları kısa yazmanın yoludur.
ikili ← 11010110 ; 214 ; sekizli: sağdan 3'erli grupla gruplar ← 011 | 010 | 110 sekizli ← ? kontrol ← ? ; onaltılık: sağdan 4'erli grupla gruplar ← 1101 | 0110 onaltılık ← ? kontrol ← ?
Çıktı Sorusu · Taban Dönüşümü
Soru 3: Onaltılıktan İkiliye
Her onaltılık basamak 4 bittir. Aşağıdaki sayıları ikili ve onluk sisteme çevirin:
a) A7₁₆ b) 2C₁₆ c) 3F₁₆
Cevabı göster
a) 10100111₂ = 167 b) 00101100₂ = 44 c) 00111111₂ = 63
- Onluk değer: a) 10 · 16 + 7 = 167 · b) 2 · 16 + 12 = 44 · c) 3 · 16 + 15 = 63.
- A–F harfleri 10–15 değerleridir.
Adım Adım Çalıştırma · Negatif Sayılar
Soru 4: İkiye Tümleyen: −13
8 bit ikiye tümleyen gösterimde −13 nasıl yazılır? Algoritmayı izleyin ve sonucu +13 ile toplayarak kontrol edin.
İki adım yeterli: bitleri ters çevir, sonra 1 ekle.
+13 = 8 + 4 + 1 → 00001101.
Tüm bitler ters çevrilir (0 ↔ 1). Buna birler tümleyeni denir.
11110010 + 1 = 11110011. En soldaki 1 sayının negatif olduğunu gösterir.
Toplam 9 bit çıkar; 9. bit (elde) 8 bitlik yazmaca sığmaz ve atılır.
Kalan 00000000 = 0 ✓: 13 + (−13) = 0. Toplama devresi negatifler için ayrıca bir şey yapmaz.
n ← 13
artı ← ikili8(n)
ters ← tüm bitleri çevir(artı)
eksi ← ters + 1
kontrol ← artı + eksi
yaz(eksi, kontrolün son 8 biti)Çoktan Seçmeli · Taşma
Soru 5: byte Taşması
Aşağıdaki kod parçasının çıktısı hangi şıkta doğru verilmiştir?
byte x = 127;
x++;
x++;
System.out.print(x);A: Java’da byte 8 bit ikiye tümleyen sayıdır (−128 … 127). 127 + 1 = 01111111 + 1 = 10000000 = −128 (taşma); bir artış daha −127 verir. −128 yalnızca ilk artıştan sonraki değerdir; 129 8 bite sığmaz.
Çoktan Seçmeli · Taşma
Soru 6: İşaretsiz 8 Bitte 180 + 100
8 bitlik işaretsiz bir yazmaçta 180 + 100 işlemi yapılıyor. Yazmaçta hangi değer kalır?
D: 280, 8 bite sığmaz (en fazla 255). 280 = 100011000₂; 9. bit (256) atılır, kalan 00011000 = 24. Kısaca 280 − 256 = 24 (taşma). Yazmaç 255’te “takılıp kalmaz”.
Çıktı Sorusu · Kayan Noktalı Sayılar
Soru 7: 0.1 + 0.2
Aşağıdaki kodun çıktısı nedir?
System.out.println(0.1 + 0.2);
System.out.println(0.1 + 0.2 == 0.3);
System.out.println(
Math.abs(0.1 + 0.2 - 0.3) < 1e-9);Cevabı göster
Çıktı:
0.30000000000000004 false true
- 0,1 ve 0,2 ikili sistemde sonlu bitle tam yazılamaz; double’da yuvarlanmış hâlleri saklanır.
- Toplam 0,3’e çok yakın ama eşit değildir →
==false. - Ondalıklı sonuçlar küçük bir tolerans ile karşılaştırılır → true.
Adım Adım Çalıştırma · Kayan Noktalı Sayılar
Soru 8: 0,3 Neden Tam Saklanamaz?
Ondalık kesir, sürekli 2 ile çarpılıp tam kısım alınarak ikiliye çevrilir. 0,3 için algoritmayı izleyin. Açılım biter mi?
Her turda kesir 2 ile çarpılır; tam kısım (0 ya da 1) bir sonraki bittir.
0,3 × 2 = 0,6 → tam kısım 0.
0,6 × 2 = 1,2 → bit 1, kesirden 1 çıkarılır: 0,2.
0,2 × 2 = 0,4 → bit 0.
0,4 × 2 = 0,8 → bit 0.
0,8 × 2 = 1,6 → bit 1, kesir 0,6.
0,6 ilk turda da görülmüştü: açılım döngüye girdi, hiç bitmez. Sonlu bitle kesilince küçük bir yuvarlama hatası oluşur.
kesir ← 0,3 bitler ← “0,” tekrarla: kesir ← kesir × 2 bit ← tam kısım(kesir) bitler ← bitler + bit kesir ← kesir − bit kesir daha önce görüldüyse dur
Çoktan Seçmeli · Kayan Noktalı Sayılar
Soru 9: float’ın Bitleri
IEEE 754 standardındaki 32 bitlik float sayısının bit alanları hangisidir?
C: float = 1 + 8 + 23 = 32 bit. A, 64 bitlik double’ın alanlarıdır (1 + 11 + 52). Değer = (−1)^işaret × 1,kesir × 2^(üs − 127); normal sayılarda baştaki 1 saklanmaz.
Çıktı Sorusu · Metin Temsili
Soru 10: Karakter Kodlarıyla Hesap
ASCII’de “0” karakterinin kodu 48’dir ve rakamlar ardışıktır. Java’da char bir sayısal koddur. Aşağıdaki kodun çıktısı nedir?
char c = '7'; System.out.println(c + 1); System.out.println((char) (c + 1)); System.out.println(c - '0');
Cevabı göster
Çıktı:
56 8 7
- “7” = 48 + 7 = 55.
c + 1tam sayı toplamıdır → 56. - 56’yı tekrar karaktere çevirince “8” görünür.
c - '0'= 55 − 48 = 7: rakam karakterinin sayısal değeri. Aynı bit dizisinin anlamını tip belirler.
Adım Adım Çalıştırma · Metin Temsili
Soru 11: “Ali” Kelimesini Kodlama
ASCII kodları A = 65, l = 108, i = 105’tir. Algoritma “Ali” kelimesinin her karakteri için ne yazdırır? Kelime bellekte kaç bayt tutar?
Her karakter önce bir sayıya, sayı da 8 bitlik bir bayta çevrilecek.
İlk karakter A → 65.
65 = 64 + 1 → 01000001.
İkinci karakter l → 108.
108 = 64 + 32 + 8 + 4 → 01101100.
Üçüncü karakter i → 105.
105 = 64 + 32 + 8 + 1 → 01101001.
Karakter kalmadı. Kelime 3 bayt = 24 bit tutar.
metin ← “Ali” her karakter c için: kod ← ASCII(c) yaz(ikili8(kod))
Adım Adım Çalıştırma · Metin Temsili
Soru 12: UTF-8 Kodlama: “ş”
Unicode “ş” harfine U+015F kod noktasını atar. UTF-8 bu harfi hangi baytlarla saklar? 2 baytlık şablon 110xxxxx 10xxxxxx’tir.
015F₁₆ = 1·256 + 5·16 + 15 = 351.
351 = 256 + 64 + 16 + 8 + 4 + 2 + 1. 7 bite sığmaz (ASCII değil) ama 11 bite sığar → 2 bayt.
11 bit, şablondaki x’lere göre 5 + 6 olarak bölünür.
Baştaki 110, “2 baytlık karakterin ilk baytı” demektir.
Baştaki 10, “devam baytı” demektir.
“ş” = C5 9F (2 bayt). ASCII harfler 1, € 3, emoji 4 bayt tutar.
c ← “ş”
kod ← U+015F
ikili ← 11 bitlik(kod)
üst ← ilk 5 bit
alt ← son 6 bit
bayt1 ← 110 + üst
bayt2 ← 10 + alt
yaz(onaltılık(bayt1, bayt2))Çoktan Seçmeli · Metin Temsili
Soru 13: Unicode ve UTF-8
Unicode ve UTF-8 ile ilgili hangisi doğrudur?
D: UTF-8 değişken uzunluklu bir kodlamadır; ASCII karakterleri tek baytla yazılır, böylece eski ASCII metinler geçerli UTF-8 olur. “A” = U+0041 = 65, ASCII ile aynıdır. Unicode farklı yazı sistemlerini, matematik simgelerini ve emojiyi kapsar.
Çıktı Sorusu · Mantık Kapıları
Soru 14: NOT, AND, OR Birlikte
X = NOT (A AND B) OR C ifadesinin değerini aşağıdaki üç durum için bulun (önce parantez, sonra NOT, en son OR).
a) A = 1, B = 1, C = 0
b) A = 1, B = 0, C = 0
c) A = 1, B = 1, C = 1
Cevabı göster
| A AND B | NOT(…) | OR C | X | |
|---|---|---|---|---|
| a | 1 | 0 | 0 OR 0 | 0 |
| b | 0 | 1 | 1 OR 0 | 1 |
| c | 1 | 0 | 0 OR 1 | 1 |
NOT değeri tersine çevirir (0 → 1, 1 → 0). OR’da tek bir 1 yeterlidir; bu yüzden C = 1 iken A ve B ne olursa olsun X = 1’dir.
Adım Adım Çalıştırma · Mantık Kapıları
Soru 15: İkili Toplama: 11 + 7
1011₂ + 0111₂ toplamını sütun sütun yapan algoritmayı izleyin. Her sütunda t, yazılan basamak ve elde ne olur?
Onluktaki gibi sağdan sola. Kural: 1 + 1 = 10₂ (0 yaz, elde 1).
1. sütun: 1 + 1 = 10₂ → 0 yaz, elde 1.
2. sütun: 1 + 1 + 1 (elde) = 11₂ → 1 yaz, elde 1.
3. sütun: 0 + 1 + 1 = 10₂ → 0 yaz, elde 1.
4. sütun: 1 + 0 + 1 = 10₂ → 0 yaz, elde 1.
Son elde başa yazılır: 10010₂ = 16 + 2 = 18 = 11 + 7 ✓. Sonuç 5 bit gerektirdi.
A ← 1011 ; 11 B ← 0111 ; 7 elde ← 0 sağdan sola her sütun i için: t ← A[i] + B[i] + elde basamak ← t mod 2 elde ← t div 2 elde = 1 ise başa 1 yaz
Adım Adım Çalıştırma · Mantık Kapıları
Soru 16: Tam Toplayıcı: 1 + 0 + 1
Tam toplayıcı iki yarım toplayıcı ve bir OR kapısından oluşur. A = 1, B = 0, gelen elde Cin = 1 için her kapının çıkışı nedir?
Yarım toplayıcı: SUM = XOR, CARRY = AND. Tam toplayıcı gelen eldeyi de toplar.
1 XOR 0 = 1 (girdiler farklı).
1 AND 0 = 0: ilk toplamada elde yok.
1 XOR 1 = 0: sonuç basamağı 0.
1 AND 1 = 1: elde ikinci yarım toplayıcıdan geldi.
0 OR 1 = 1.
(Cout, SUM) = 10₂ = 2 = 1 + 0 + 1 ✓.
A ← 1, B ← 0, Cin ← 1 s1 ← A XOR B ; 1. yarım toplayıcı c1 ← A AND B SUM ← s1 XOR Cin ; 2. yarım toplayıcı c2 ← s1 AND Cin Cout ← c1 OR c2 yaz(Cout, SUM)
Adım Adım Çalıştırma · Getir–Çöz–Yürüt
Soru 17: Programı Adım Adım Çalıştırma
CPU aşağıdaki bellek içeriğini 1000 adresinden başlayarak çalıştırıyor. Her getir ve yürüt adımında PC, IR, ACC ve bellek[1007] ne olur?
Başlangıç: PC ilk komutun adresini tutar.
Getir: 1000’deki komut IR’ye gelir, PC bir artar.
Çöz + yürüt: bellek[1005] = 9 okunur, ACC’ye yüklenir.
Getir: ADD 1006; PC → 1002.
ALU: 9 + 6 = 15.
Getir: aynı komut bir kez daha; PC → 1003.
ALU: 15 + 6 = 21.
Getir: STORE 1007; PC → 1004.
ACC’deki 21 veri yoluyla 1007 adresine yazılır.
Getir: HALT → CPU durur. 5 komut, 5 tur; sonuç 9 + 6 + 6 = 21. HALT olmasaydı CPU 1005’teki 9’u komut sanardı.
1000: LOAD 1005 ; ACC ← bellek[1005] 1001: ADD 1006 ; ACC ← ACC + bellek[1006] 1002: ADD 1006 1003: STORE 1007 ; bellek[1007] ← ACC 1004: HALT 1005: 9 1006: 6 1007: 0
Çıktı Sorusu · Getir–Çöz–Yürüt
Soru 18: Komutların Yeri Değişirse
Sunumdaki programda STORE ile ADD’in yeri değiştirilmiş. Program bitince ACC ve bellek[1006] ne olur? Kaç komut getirilir?
1000: LOAD 1004 1001: STORE 1006 1002: ADD 1005 1003: HALT 1004: 12 1005: 8 1006: 0
Cevabı göster
ACC = 20, bellek[1006] = 12; 4 komut getirilir.
- LOAD → ACC = 12. STORE → bellek[1006] = 12 (o anki ACC).
- ADD → ACC = 12 + 8 = 20, ama bu değer belleğe hiç yazılmaz.
- HALT → dur. CPU komutları sırayla yürütür; sıra sonucu değiştirir.
Çoktan Seçmeli · Veri Yolları
Soru 19: Adresi Hangi Yol Taşır?
CPU, 1004 adresindeki değeri okuyor. “1004” sayısını belleğe hangi yol taşır?
B: Adres yolu hangi hücrenin istendiğini taşır ve tek yönlüdür (CPU’dan çıkar). Kontrol yolu OKU/YAZ ve zamanlama sinyallerini, çift yönlü veri yolu ise hücrenin içeriğini taşır.
Çıktı Sorusu · Komut Kodlama
Soru 20: Makine Komutunu Çözme
Varsayımsal bir makinede komut 16 bittir: ilk 4 bit opcode (HALT = 0000, LOAD = 0001, ADD = 0010, STORE = 0011), kalan 12 bit adrestir.
a) 0011 0011 1110 1110 hangi komuttur?
b) LOAD 1004 nasıl kodlanır?
c) Kaç farklı adres gösterilebilir?
Cevabı göster
a) STORE 1006 b) 0001 0011 1110 1100 c) 4.096
- a) 001111101110₂ = 3EE₁₆ = 3·256 + 14·16 + 14 = 1006.
- b) 1004 = 3EC₁₆ = 0011 1110 1100.
- c) 12 bit → 2¹² = 4.096 adres (0–4095).
Çoktan Seçmeli · Bilgisayar Mimarisi
Soru 21: von Neumann Darboğazı
“von Neumann darboğazı” neyi ifade eder?
A: Ortak bellek ve ortak yol esneklik sağlar (depolanan program) ama CPU, bellekteki veriyi beklerken boş kalabilir. Önbellek bu darboğazı hafifletmek için vardır. C yanlıştır: depolanan program yaklaşımı tam tersine yazılımla güncellemeyi mümkün kılar.
Çoktan Seçmeli · Programlama
Soru 22: Java’dan Assembly’ye
int fark = a - b; satırının, sunumdaki komutlarla doğru assembly karşılığı hangisidir?
C: Önce a bellekten yazmaca yüklenir (ALU yalnızca yazmaçlarla çalışır), sonra b çıkarılır, en son sonuç fark değişkeninin yerine yazılır. A’da çıkarma, R1’e a yüklenmeden yapılır. Tek bir Java satırı birkaç makine komutuna dönüşür.