Bölüm 3: Sayı Sistemleri

Bölüm 3: Sayı Sistemleri · Çalışma Soruları
Romen rakamlarıİkili ve onaltılıkTaban dönüşümleriKesirli sayılarİkiye tümleyenİşaretli yorumİkili aritmetikIEEE 754BCDGray koduLittle-endian
Sercan KÜLCÜ

Ç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?

bölünen ÷ 16 = bölüm, kalan

Onluk sayı tabana (16) bölünür; kalanlar onaltılık basamakları verir.

bölünen ÷ 16 = bölüm, kalan2024 ÷ 16 = 126kalan 88

2024 = 16 × 126 + 8. Kalan 8 = 8h; sonucun soluna eklenir.

bölünen ÷ 16 = bölüm, kalan2024 ÷ 16 = 126kalan 88126 ÷ 16 = 7kalan 14E

126 = 16 × 7 + 14. Kalan 14 = Eh; sonucun soluna eklenir.

bölünen ÷ 16 = bölüm, kalan2024 ÷ 16 = 126kalan 88126 ÷ 16 = 7kalan 14E7 ÷ 16 = 0kalan 77

7 = 16 × 0 + 7. Kalan 7 = 7h; sonucun soluna eklenir. Bölüm 0 oldu: döngü biter.

bölünen ÷ 16 = bölüm, kalan2024 ÷ 16 = 126kalan 88126 ÷ 16 = 7kalan 14E7 ÷ 16 = 0kalan 77▲2024 = 7E8h = 0111 1110 1000b

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?

AX0019AHALBL0000000000CF0ZF0SF0OF0AL ikili: 00011001

AL = 25 = 19h = 0001 1001b. MOV bayrakları etkilemez.

AX00E7AHALBL0000000000CF1ZF0SF1OF0AL ikili: 11100111

NEG: AL = 0 − 25 = E7h (256 − 25 = 231). İşlenen sıfır olmadığından CF = 1; MSB = 1 → SF = 1.

AX00E7AHALBLE711100111CF1ZF0SF1OF0AL ikili: 11100111

BL ← AL = E7h. MOV kopyalar, bayraklar değişmez.

AX00E7AHALBL1800011000CF1ZF0SF1OF0AL ikili: 11100111

NOT: bütün bitler ters çevrilir: 1110 0111 → 0001 1000 = 18h = 24. Birler tümleyeni, ikiye tümleyenden 1 eksiktir. NOT bayrakları etkilemez.

AXFFE7AHALBL1800011000CF1ZF0SF1OF0AL ikili: 11100111

CBW: AL'nin MSB'si (1) AH'nin bütün bitlerine kopyalanır → AX = FFE7h = −25 (16 bit).

AXFF00AHALBL1800011000CF1ZF1SF0OF0AL ikili: 00000000

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?

eldeA+ BSAF89DC62

A = 6D8Ah, B = 2C9Fh. Toplama en sağdaki basamaktan başlar; elde 0.

eldeA+ BSAF989DC6210 + 15 + 0 = 25

A + F + 0 = 25 ≥ 16 → basamağa 25 − 16 = 9 (9) yazılır, 1 elde.

eldeA+ BSAF91892DC628 + 9 + 1 = 18

8 + 9 + 1 = 18 ≥ 16 → basamağa 18 − 16 = 2 (2) yazılır, 1 elde.

eldeA+ BSAF918921DCA6213 + 12 + 1 = 26

D + C + 1 = 26 ≥ 16 → basamağa 26 − 16 = 10 (A) yazılır, 1 elde.

eldeA+ BSAF918921DCA16296 + 2 + 1 = 9

6 + 2 + 1 = 9 < 16 → 9 yazılır, elde yok.

eldeA+ BSAF918921DCA1629

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 = C3h
  • MOV 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.

Son

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