İçeriğe geç
Educora
Orta8. sınıf22 dk16 / 59

Farklı sayı sistemlerinde aritmetik işlemler

İkilik, sekizlik, on altılık ve her tabanda alt alta toplama, çıkarma, çarpma ve bölmeyi, sonucu onlukta kontrol etmeyi, farklı tabanlı ifadeleri hesaplamayı ve n bitlik bellekte taşmayı öğren.

Kendini test et
Bu derste öğreneceklerin
  • Her tabanda eldeli toplama ve basamak bozarak çıkarma yapmak
  • İkilik sayıları çarpmak ve bölmek, 2ᵏ ile çarpmayı kaydırma olarak yapmak
  • Farklı tabanlarda verilmiş sayılarla ifadeleri hesaplamak ve sonucu onlukta kontrol etmek
  • n bitlik bellekte taşmayı açıklamak ve saklanan sonucu bulmak

Okulda 9 + 1 = 10 yazdığında aslında birler basamağı dolar ve 1 onlar basamağına geçer. İkilik sistemde basamak daha çabuk dolar: 1 + 1 = 10₂. Bilgisayarın işlemcisi bütün hesaplamaları ikilik sistemde, tam da alt alta toplama kuralıyla yapar. Bu derste alt alta işlemleri her tabana taşıyacağız; tek fark, basamağın 10’da değil b’de dolmasıdır. Sayıları çevirmeyi “Sekizlik ve on altılık sayı sistemleri” dersinde öğrendik; şimdi onlarla doğrudan hesap yapacağız.

Alt alta toplama: elde kuralı

Toplama onluk sistemdeki gibi sağdan sola, basamak basamak yapılır. Bir basamaktaki toplam s tabandan küçükse (s < b) olduğu gibi yazılır. s ≥ b ise basamağa s − b yazılır, 1 de bir sonraki basamağa elde olarak aktarılır. İkilik sistemin bütün toplama tablosu dört satırdır: 0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 10₂, 1 + 1 + 1 = 11₂.

s = q·b + r → basamağa r yazılır, q bir sonraki basamağa aktarılır
burada:
  • sbasamaktaki rakamların ve eldenin toplamı
  • btaban
  • ryazılan rakam, 0 ≤ r ≤ b − 1
  • qelde

Toplamada s ≤ 2(b − 1) + 1 olduğu için elde her zaman 0 ya da 1’dir; çarpmada q daha büyük olabilir.

Neden böyle? Bir basamakta b birim toplanınca bunlar birlikte bir sonraki basamağın tam 1 birimine eşit olur, çünkü her basamağın değeri sağındakinin b katıdır. Örneğin sekizlikte birler basamağında 13 birim = 8 + 5: sekizi sonraki basamağa 1 olarak geçer, 5 yerinde kalır. Onluktaki “elde var 1” kuralı bunun b = 10 durumudur. Aşağıda ikilik bir toplama alt alta gösterilmiştir.

Text
   111111 
    101101
+    11011
----------
   1001000
101101₂ + 11011₂ alt alta. En üst satır eldelerdir.
İkilik ve sekizlik toplama

Hesapla: 1) 101101₂ + 11011₂; 2) 3657₈ + 1426₈.

Çözümü göster
1) Sağdan sola:
1 + 1 = 10₂ → 0 yazılır, elde 1
0 + 1 + 1 = 10₂ → 0, elde 1
1 + 0 + 1 = 10₂ → 0, elde 1
1 + 1 + 1 = 11₂ → 1, elde 1
0 + 1 + 1 = 10₂ → 0, elde 1
1 + 0 + 1 = 10₂ → 0, elde 1
Son elde en sola yazılır: 1001000₂. Sağlama: 45 + 27 = 72 = 64 + 8 ✓
2) 7 + 6 = 13 = 8 + 5 → 5, elde 1
5 + 2 + 1 = 8 = 8 + 0 → 0, elde 1
6 + 4 + 1 = 11 = 8 + 3 → 3, elde 1
3 + 1 + 1 = 5 → 5
Cevap: 5305₈. Sağlama: 1967 + 790 = 2757 = 5·512 + 3·64 + 0·8 + 5 ✓
On altılık ve 5 tabanında toplama

Hesapla: 1) 9AE₁₆ + 5C7₁₆; 2) 3421₅ + 2434₅.

Çözümü göster
1) E + 7 = 14 + 7 = 21 = 16 + 5 → 5, elde 1
A + C + 1 = 10 + 12 + 1 = 23 = 16 + 7 → 7, elde 1
9 + 5 + 1 = 15 = F
Cevap: F75₁₆. Sağlama: 2478 + 1479 = 3957 = 15·256 + 7·16 + 5 ✓
2) 1 + 4 = 5 = 5 + 0 → 0, elde 1
2 + 3 + 1 = 6 = 5 + 1 → 1, elde 1
4 + 4 + 1 = 9 = 5 + 4 → 4, elde 1
3 + 2 + 1 = 6 = 5 + 1 → 1, elde 1
Cevap: 11410₅. Sağlama: 486 + 369 = 855 = 625 + 125 + 100 + 5 ✓

Alt alta çıkarma: basamak bozma

Çıkarmada üstteki rakam alttakinden küçükse soldaki basamaktan 1 alınır (basamak bozulur). Onluk sistemde bu 1, 10 değerindedir; b tabanında ise b değerindedir: ikilikte 2, sekizlikte 8, on altılıkta 16. Komşu basamakta 0 varsa daha soldaki basamaktan alınır ve yol üstündeki sıfırlar b − 1’e dönüşür; onluktaki 1000 − 1 = 999 gibi.

a < c ise: rakam = a + b − c, soldaki basamak 1 azalır
burada:
  • aeksilenin rakamı
  • cçıkanın rakamı
  • btaban

İkilikte en sık görülen durum: 10₂ − 1₂ = 1₂, yani 2 − 1 = 1.

İkilik ve sekizlik çıkarma

Hesapla: 1) 101101₂ − 10110₂; 2) 5203₈ − 1647₈.

Çözümü göster
1) Sağdan sola:
1 − 0 = 1
0 − 1: soldaki 1’den alırız: 2 − 1 = 1
0 − 1 (bu basamak 1 verdi, 0 kaldı): yine alırız, 2 − 1 = 1
0 − 0 = 0 (1 verdi)
0 − 1: alırız, 2 − 1 = 1
0 − 0 = 0 (1 verdi)
Cevap: 10111₂. Sağlama: 45 − 22 = 23 = 16 + 4 + 2 + 1 ✓
2) 3 − 7: komşu basamakta 0 var, 2’den alınır: 2 → 1, 0 → 7, sağdaki basamağa 8 gelir: 3 + 8 − 7 = 4
7 − 4 = 3
1 − 6: 5’ten alınır: 1 + 8 − 6 = 3, 5 → 4
4 − 1 = 3
Cevap: 3334₈. Sağlama: 2691 − 935 = 1756 = 3·512 + 3·64 + 3·8 + 4 ✓
On altılık çıkarma

Hesapla: A03₁₆ − 4F8₁₆.

Çözümü göster
3 − 8: komşu basamakta 0 var, A’dan alınır: A → 9, 0 → F (= 16 − 1), sağdaki basamağa 16 gelir: 3 + 16 − 8 = 11 = B
F − F = 0
9 − 4 = 5
Cevap: 50B₁₆. Sağlama: 2563 − 1272 = 1291 = 5·256 + 0·16 + 11 ✓

Çarpma ve bölme

İkilik sistemin çarpım tablosu en basitidir: 0·0 = 0·1 = 1·0 = 0, 1·1 = 1. Bu yüzden ikilik çarpma kaydırma ve toplamadan ibarettir: ikinci çarpandaki her 1 için birinci çarpan o basamak kadar sola kaydırılarak yazılır, sonra satırlar toplanır. Diğer tabanlarda alt alta çarpma onluktaki gibidir, yalnızca elde b’ye bölerek bulunur. Bölme de onluktaki gibi yapılır; ikilikte bölümün her rakamı 0 ya da 1’dir. Kaydırma neden çarpmadır? Sayı bir basamak sola kayınca her rakamı b kat daha değerli bir basamağa geçer, yani sayının tamamı b ile çarpılmış olur.

N·bᵏ: sağa k sıfır eklenir; N : bᵏ: son k rakam atılır ve kalanı gösterir
burada:
  • Nb tabanında yazılmış bir sayı
  • kkaydırma (basamak sayısı)

Onluktaki 37·100 = 3700 kuralının genel biçimi. İkilikte 2 ile çarpmak bir basamak sola, 2’ye bölmek bir basamak sağa kaydırmaktır.

İkilik çarpma ve bölme

1) 1011₂ · 110₂
2) 10111₂ · 1000₂
3) 10111011₂ sayısını 100₂’ye böl: bölümü ve kalanı bul.

Çözümü göster
1) 110₂’nin 1’leri ikinci ve üçüncü basamaktadır; bu yüzden 1011₂’yi bir ve iki basamak sola kaydırıp toplarız: 10110₂ + 101100₂ = 1000010₂. Sağlama: 11·6 = 66 = 64 + 2 ✓
2) 1000₂ = 2³ → sağa üç sıfır: 10111000₂ (23·8 = 184 ✓).
3) 100₂ = 2² → son iki rakam kalandır: bölüm 101110₂ = 46, kalan 11₂ = 3. Sağlama: 4·46 + 3 = 187 = 10111011₂ ✓
Sekizlik çarpma ve ikilik bölme

1) 47₈ · 6₈
2) 110110₂ : 110₂

Çözümü göster
1) 7·6 = 42 = 5·8 + 2 → 2 yazılır, elde 5
4·6 + 5 = 29 = 3·8 + 5 → 5 yazılır, elde 3
Cevap: 352₈. Sağlama: 39·6 = 234 = 3·64 + 5·8 + 2 ✓
2) Soldan: 110 ≥ 110 → bölüme 1, kalan 0; sıradaki rakam indirilir: 1 < 110 → 0; 11 < 110 → 0; 110 → 1, kalan 0.
Bölüm 1001₂. Sağlama: 54 : 6 = 9 ✓

Farklı tabanlı ifadeler ve sağlama

DİM sorularında sık sık farklı tabanlarda yazılmış sayılarla bir ifade verilir ve cevap belirli bir tabanda istenir. En güvenli yol: bütün sayıları onluğa çevir, hesapla, sonucu istenen tabana çevir. Tabanlar 2, 8 ve 16 ise hepsini ikiliğe çevirip ikilikte toplamak da olur. Seçtiğin seçeneği onluğa çevirip kontrol etmek bir dakika sürer ve hatayı yakalar.

DİM tarzı çoktan seçmeli soru

11011₂ + 37₈ + 1A₁₆ ifadesinin değerini ikilik sistemde yazın.
A) 1010100 B) 1001100 C) 1010010 D) 1100100 E) 1010110

Çözümü göster
Onluğa: 11011₂ = 16 + 8 + 2 + 1 = 27; 37₈ = 3·8 + 7 = 31; 1A₁₆ = 16 + 10 = 26.
Toplam: 27 + 31 + 26 = 84.
84 = 64 + 16 + 4 = 2⁶ + 2⁴ + 2² = 1010100₂.
Doğru cevap: A) 1010100.
Kodlanan soru (cevabı yaz)

101₂ · 7₈ + 1F₁₆ ifadesinin değerini sekizlik sistemde yazın.

Çözümü göster
101₂ = 5, 7₈ = 7, 1F₁₆ = 16 + 15 = 31.
5·7 + 31 = 66.
66 : 8 = 8, kalan 2; 8 : 8 = 1, kalan 0; 1 : 8 = 0, kalan 1 → 102₈. Sağlama: 64 + 0 + 2 = 66 ✓

n bitlik bellekte taşma

Bilgisayar bir sayıyı sabit uzunluktaki bir bellek hücresinde saklar. n bite 0’dan 2ⁿ − 1’e kadar sayılar sığar: 8 bite 0…255, 16 bite 0…65535. Toplam bu sınırı aşınca en soldaki elde hücreye sığmaz ve kaybolur; buna taşma denir. Saklanan sonuç, toplamın 2ⁿ’ye bölümünden kalandır; yani program beklenmedik biçimde küçük bir sayı görür.

saklanan sonuç = (a + c) mod 2ⁿ
burada:
  • a, ctoplanan sayılar (işaretsiz tam sayılar)
  • nhücredeki bit sayısı
  • modbölümden kalan

Toplam 2ⁿ − 1’den büyük değilse taşma olmaz ve sonuç doğrudur.

Taşma

1) 8 bitlik bir hücrede 11001000₂ + 01100100₂ toplanıyor. Hücrede hangi sayı kalır?
2) 4 bitlik bir hücrede 1011₂ + 0111₂ toplanıyor. Sonuç nedir?

Çözümü göster
1) 200 + 100 = 300 > 255 — taşma. Alt alta: 11001000₂ + 01100100₂ = 100101100₂; dokuzuncu bit kaybolur, hücrede 00101100₂ = 44 kalır. Sağlama: 300 − 256 = 44 ✓
2) 11 + 7 = 18 > 15: 10010₂ → beşinci bit kaybolur, hücrede 0010₂ = 2 = 18 − 16 kalır.
Etkileşimli
Simülasyon yükleniyor…
Sayıyı 255 yap (bütün bitler 1) ve “1 ekle” düğmesine bas: 8 bit taşar ve sayaç 0’dan yeniden başlar.

Python’da int(s, b) b tabanındaki yazılışı onluğa, bin(), oct(), hex() ise geri çevirir; böylece her cevap birkaç satırla kontrol edilebilir. Python’un tam sayıları taşmaz, bu yüzden 8 bitlik hücreyi % 256 ile taklit ederiz:

Python
a = int('101101', 2) + int('11011', 2)
print(a, bin(a))
b = int('3657', 8) + int('1426', 8)
print(b, oct(b))
c = int('A03', 16) - int('4F8', 16)
print(c, hex(c))
print((200 + 100) % 256)
▸ Beklenen çıktı
72 0b1001000
2757 0o5305
1291 0x50b
44

Bu derste taban hep biliniyordu. “Sayı sistemleri: tabanı bilinmeyen problemler” dersinde tersini, yani eşitlikten tabanı bulmayı öğreneceğiz; DİM’in kodlanan sorularının çoğu tam olarak böyledir.

Önemli noktalar

  • Alt alta işlemler her tabanda aynı kurallarla yapılır, yalnızca basamak b’de dolar: s ≥ b ise s − b yazılır, elde 1 olur.
  • Çıkarmada alınan 1, b değerindedir: ikilikte 2, sekizlikte 8, on altılıkta 16.
  • İkilik çarpma = kaydırma + toplama; bᵏ ile çarpmak k sıfır eklemek, bᵏ’ye bölmek son k rakamı (kalanı) atmaktır.
  • Farklı tabanlı ifadeyi onlukta hesapla, sonucu istenen tabana çevir ve onlukta kontrol et.
  • n bitlik hücrede (a + c) mod 2ⁿ saklanır; 2ⁿ − 1’den büyük toplam taşmaya yol açar.

Kendini test et

12 soru. Her doğru cevap XP kazandırır.

1 / 12
İkilik sistemde 1 + 1 + 1 toplamı nasıl yazılır?