Bölüm 3: Sayı Sistemleri
Çoktan Seçmeli · Sayıların Temsili
Soru 1: Romen Rakamı
MCMXLIV Romen rakamıyla yazılmış sayının onluk değeri nedir?
C: M = 1000, CM = 1000 − 100 = 900, XL = 50 − 10 = 40, IV = 5 − 1 = 4 → 1944. Küçük simge büyükten önce gelirse çıkarılır. 1964, XL'yi 60 (LX) okumaktır; 2144, CM'yi 1100 saymaktır; 1946, IV'ü 6 (VI) okumaktır.
Hesap Sorusu · Konumsal Sistemler
Soru 2: Basamak Ağırlıkları
Aşağıdaki sayıların onluk değeri nedir?
a) 01101011b b) 1111011b c) 1ABh d) 512Fh
Cevabı göster
- a) 64 + 32 + 8 + 2 + 1 = 107 (= 6Bh: 0110 1011)
- b) 64 + 32 + 16 + 8 + 2 + 1 = 123 (= 7Bh)
- c) 1·16² + A·16 + B = 256 + 160 + 11 = 427
- d) 5·16³ + 1·16² + 2·16 + F = 20 480 + 256 + 32 + 15 = 20 783
İkili sayılarda yalnız 1 olan basamakların ağırlıkları toplanır. Dörtlü gruplama da kısa yoldur: 0110 1011 = 6Bh = 6·16 + 11 = 107. Onaltılıkta A … F = 10 … 15.
Çoktan Seçmeli · Konumsal Sistemler
Soru 3: Sayı Yazımı
Aşağıdaki komutlardan hangisi AL'ye diğerlerinden farklı bir değer yükler?
D: Sonek yoksa sayı onluktur: 41 = 29h. Diğer üçü aynı değeri (65 = 41h = 'A') farklı tabanlarda yazar: 0100 0001b = 41h, 101o = 64 + 1 = 65. Taban yalnızca yazım biçimidir; makine kodunda hepsi ikilidir.
Adım Adım Çalıştırma · Taban Dönüşümleri
Soru 4: 2024 → Onaltılık ve İkili
2024 sayısı 16'ya art arda bölünerek onaltılığa çevriliyor. Sonuç nedir? İkili karşılığı nasıl bulunur?
Onluk sayı tabana (16) bölünür; kalanlar onaltılık basamakları verir.
2024 = 16 × 126 + 8. Kalan 8 = 8h; sonucun soluna eklenir.
126 = 16 × 7 + 14. Kalan 14 = Eh; sonucun soluna eklenir.
7 = 16 × 0 + 7. Kalan 7 = 7h; sonucun soluna eklenir. Bölüm 0 oldu: döngü biter.
Kalanlar aşağıdan yukarı okunur: 7E8h. Her onaltılık basamak 4 bite açılır: 7 = 0111, E = 1110, 8 = 1000. Kontrol: 7·256 + 14·16 + 8 = 2024.
n = 2024; sonuc = "" while (n > 0) { kalan = n % 16; n = n / 16; // tam bölme sonuc = rakam(kalan) + sonuc; }
Hesap Sorusu · Taban Dönüşümleri
Soru 5: Kesirli Sayılar
a) 0,6875 sayısını ikiliye çevirin.
b) 13,375 sayısını ikili ve onaltılık yazın.
c) 0,3 sayısının ilk 8 kesir biti nedir? İkilide sonlu mudur?
Cevabı göster
- a) 0,6875·2 = 1,375 → 1; 0,375·2 = 0,75 → 0; 0,75·2 = 1,5 → 1; 0,5·2 = 1,0 → 1 → 0,1011b (½ + ⅛ + 1/16)
- b) 13 = 1101b; 0,375 → 0,011b → 1101,011b. Dörtlü gruplama virgülden iki yana: 1101 , 0110 → D,6h
- c) 0,6 → 0; 1,2 → 1; 0,4 → 0; 0,8 → 0; 1,6 → 1; 1,2 → 1; 0,4 → 0; 0,8 → 0 → 0,01001100b. 0,2 kesri ikinci kez görüldüğü için 1001 deseni sonsuza kadar tekrar eder: sonlu değildir.
Tam kısım bölmeyle, kesirli kısım 2 ile çarpmayla çevrilir; kesir bitleri yukarıdan aşağı okunur.
Çoktan Seçmeli · İşaretli Sayılar
Soru 6: İşaretli Yorum
8 bitlik 1111 1011b (FBh) değerinin işaretsiz ve işaretli (ikiye tümleyen) yorumu nedir?
B: İşaretsiz: 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251. İşaretli: MSB = 1 → negatif; değeri 251 − 256 = −5 (ya da tersle + 1: 0000 0101 = 5). −123, işaret bitini yalnızca “eksi” sayan işaret-büyüklük yorumudur; −4 birler tümleyeni yorumudur.
Hesap Sorusu · İşaretli Sayılar
Soru 7: Birler ve İkiye Tümleyen
8 bitlik sistemde
a) 21 ve 20 sayılarının birler tümleyeni,
b) 25 ve 30 sayılarının ikiye tümleyeni nedir? (ikili ve onaltılık)
Cevabı göster
- a) 21 = 0001 0101 → bitler ters: 1110 1010 (EAh); 20 = 0001 0100 → 1110 1011 (EBh)
- b) 25 = 0001 1001 → ters 1110 0110 → +1 → 1110 0111 (E7h); 30 = 0001 1110 → ters 1110 0001 → +1 → 1110 0010 (E2h)
Sağlama: 256 − 25 = 231 = E7h, 256 − 30 = 226 = E2h. 8086'da birler tümleyeni NOT, ikiye tümleyen NEG komutudur. Kısa yol: sağdan ilk 1'e kadar (o dahil) bitler aynen yazılır, kalanı ters çevrilir.
Çoktan Seçmeli · İşaretli Sayılar
Soru 8: 16 Bitte −100
−100 sayısının 16 bitlik ikiye tümleyen gösterimi nedir?
A: 65536 − 100 = 65436 = FF9Ch. 8 bitteki gösterim 9Ch'dir; 16 bite işaret genişletmeyle (MSB sola kopyalanır) FF9Ch olur: CBW tam bunu yapar. 009Ch sıfırla genişletmedir (+156); 809Ch yalnız işaret bitini 1 yapmaktır; FF64h −156'dır.
Adım Adım Çalıştırma · İşaretli Sayılar
Soru 9: NEG, NOT ve CBW
Başlangıçta bütün yazmaçlar ve bayraklar 0. Kod çalışınca AX, BL, CF ve ZF ne olur?
AL = 25 = 19h = 0001 1001b. MOV bayrakları etkilemez.
NEG: AL = 0 − 25 = E7h (256 − 25 = 231). İşlenen sıfır olmadığından CF = 1; MSB = 1 → SF = 1.
BL ← AL = E7h. MOV kopyalar, bayraklar değişmez.
NOT: bütün bitler ters çevrilir: 1110 0111 → 0001 1000 = 18h = 24. Birler tümleyeni, ikiye tümleyenden 1 eksiktir. NOT bayrakları etkilemez.
CBW: AL'nin MSB'si (1) AH'nin bütün bitlerine kopyalanır → AX = FFE7h = −25 (16 bit).
E7h + 19h = 100h: 8 bite sığmayan elde CF'ye düşer → AL = 00h, CF = 1, ZF = 1. İşaretli yorumda −25 + 25 = 0 doğru: OF = 0. AH değişmez: AX = FF00h.
MOV AL, 25 NEG AL ; ikiye tümleyen MOV BL, AL NOT BL ; birler tümleyeni CBW ; AL -> AX ADD AL, 25
Hesap Sorusu · İşaretli Sayılar
Soru 10: Sabit Noktalı Kesir
8 bitlik Q5.3 biçiminde (son 3 bit kesir, en soldaki bit işaret biti)
a) −2,375 nasıl yazılır (ikili ve onaltılık)?
b) 11010,100b (D4h) hangi değeri gösterir?
Cevabı göster
- a) 2,375 · 2³ = 19 → −19 = 256 − 19 = 237 = EDh → virgül 3 bit sola: 11101,101b. Kontrol: −16 + 8 + 4 + 1 + 0,5 + 0,125 = −2,375
- b) Ağırlıklar −16, 8, 4, 2, 1, ½, ¼, ⅛: −16 + 8 + 2 + 0,5 = −5,5. Ya da D4h = 212 − 256 = −44 → −44 / 8 = −5,5
İşlemci için bu baytlar sıradan tamsayılardır; virgülün yeri programcının kabulüdür. Aralık −16 … +15,875, adım 0,125.
Çoktan Seçmeli · İkili Aritmetik
Soru 11: Elde mi, Taşma mı?
AL = 64h iken ADD AL, 3Ch çalışıyor. Sonuç ve bayraklar nedir?
C: 64h + 3Ch = A0h (100 + 60 = 160 ≤ 255): işaretsiz sonuç sığar, CF = 0. İşaretli yorumda iki pozitif sayının toplamı negatif çıktı (A0h = −96): +160 sığmaz, OF = 1. CF işaretsiz, OF işaretli taşmayı gösterir.
Adım Adım Çalıştırma · İkili Aritmetik
Soru 12: Onaltılık Toplama
6D8Ah + 2C9Fh toplamı nedir? Aynı işlem ADD AX, BX ile yapılsaydı CF ve OF ne olurdu?
A = 6D8Ah, B = 2C9Fh. Toplama en sağdaki basamaktan başlar; elde 0.
A + F + 0 = 25 ≥ 16 → basamağa 25 − 16 = 9 (9) yazılır, 1 elde.
8 + 9 + 1 = 18 ≥ 16 → basamağa 18 − 16 = 2 (2) yazılır, 1 elde.
D + C + 1 = 26 ≥ 16 → basamağa 26 − 16 = 10 (A) yazılır, 1 elde.
6 + 2 + 1 = 9 < 16 → 9 yazılır, elde yok.
Toplam 9A29h. Son basamaktan elde çıkmadı → CF = 0. İşaretli yorumda iki pozitif sayının toplamı negatif (MSB = 1) çıktı → OF = 1 (28042 + 11423 = 39465 > 32767).
elde = 0; // i = 0: en sağ basamak for (i = 0; i < 4; i++) { t = A[i] + B[i] + elde; S[i] = t % 16; elde = t / 16; } // ADD AX, BX: CF = elde
Hesap Sorusu · İkili Aritmetik
Soru 13: 16'ya Tümleyenle Çıkarma
4A2Ch − 6B57h farkını 16'ya tümleyenle toplayarak bulun. Sonuç pozitif mi, negatif mi? SUB AX, BX (AX = 4A2Ch, BX = 6B57h) sonrası AX ve CF ne olur?
Cevabı göster
- 6B57h'nin 15'e tümleyeni: F−6, F−B, F−5, F−7 → 94A8h; +1 → 16'ya tümleyen 94A9h
- 4A2Ch + 94A9h = DED5h; 4 basamağı aşan elde yok → sonuç negatif
- Büyüklük: DED5h'nin 16'ya tümleyeni 212Bh → fark −212Bh (−8491)
SUB AX, BX: AX = DED5h (işaretli yorumda −8491), ödünç alındığı için CF = 1
Çoktan Seçmeli · Kodlamalar ve Devreler
Soru 14: IEEE 754 Çözümleme
32 bitlik IEEE 754 sayısı 41200000h hangi onluk değeri gösterir?
B: 41200000h = 0 10000010 0100…0. İşaret 0 → pozitif. Üs 1000 0010b = 130 → 130 − 127 = 3. Mantissa 0,01b → gizli bitle 1,25. Değer 1,25 × 2³ = 10. 5 ve 20 üsü bir eksik ya da fazla almaktır; 2,5 üs kaydırmasını 129 sanmaktır.
Hesap Sorusu · Kodlamalar ve Devreler
Soru 15: IEEE 754 Kodlama
−12,25 sayısını 32 bitlik IEEE 754 biçiminde ikili ve onaltılık olarak yazın.
Cevabı göster
- İşaret: negatif → 1
- 12,25 = 1100,01b = 1,10001b × 2³ (normalize)
- Üs: 3 + 127 = 130 = 1000 0010b
- Mantissa: gizli 1 atılır → 1000 1000 0000 0000 0000 000
- 1 10000010 10001000000000000000000 = 1100 0001 0100 0100 0000 … → C1440000h
Bellekte little-endian olarak 00 00 44 C1 sırasıyla durur. 8086 kayan nokta komutu içermez; bu biçimle 8087 yardımcı işlemcisi ya da yazılım çalışır.
Çoktan Seçmeli · Kodlamalar ve Devreler
Soru 16: BCD Toplama
AL = 29h ve BL = 18h paketli BCD sayılardır (29 ve 18). ADD AL, BL ve ardından DAA çalışınca AL ne olur?
C: İkili toplam 29h + 18h = 41h; düşük nibble'dan elde çıktığı için AF = 1. DAA düşük basamağa 6 ekler: 41h + 6 = 47h → BCD 47 = 29 + 18. 41h düzeltmesiz sonuçtur; 2Fh, onluk 47'nin ikili karşılığıdır (BCD değil).
Çoktan Seçmeli · Kodlamalar ve Devreler
Soru 17: Gray Kodu
1011b (11) sayısının 4 bitlik Gray kodu nedir?
A: G = B XOR (B >> 1) = 1011 ⊕ 0101 = 1110. En yüksek bit aynen kalır; her sonraki bit, ikilideki kendisi ile solundaki bitin XOR'udur: 1, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. 0100 birler tümleyenidir.
Kod Okuma · Kodlamalar ve Devreler
Soru 18: Little-Endian
32 bitlik A1B2C3D4h değeri DD ile DS:0300h adresine yerleştirildi. a) 0300h … 0303h baytları nedir? Big-endian bir işlemcide nasıl olurdu? b) Kod çalışınca AX, BL ve CX ne olur?
ORG 100h MOV AX, [0302h] MOV BL, [0301h] MOV CX, [0301h] RET
Cevabı göster
- a) Little-endian (8086): 0300: D4, 0301: C3, 0302: B2, 0303: A1. Big-endian: A1 B2 C3 D4.
- b)
MOV AX, [0302h]: AL ← B2h, AH ← A1h → AX = A1B2h MOV BL, [0301h]: tek bayt → BL = C3hMOV CX, [0301h]: CL ← [0301h] = C3h, CH ← [0302h] = B2h → CX = B2C3h (hizasız sözcük okuma)
Çoktan Seçmeli · Kodlamalar ve Devreler
Soru 19: JK Flip-Flop
Bir JK flip-flop'un çıkışı başta Q = 0. J = K = 1 tutulurken 3 yükselen saat kenarı geliyor. Sonra Q ne olur?
D: JK'da J = K = 1 tersleme (toggle) durumudur: Q her kenarda ters çevrilir: 0 → 1 → 0 → 1. Yasak durum SR flip-flop'taki S = R = 1'dir; JK onu tersleme olarak tanımlar. Bu yüzden T flip-flop ve sayaçlar JK ile kurulabilir.