- 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₂.
- 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.
111111
101101
+ 11011
----------
1001000Hesapla: 1) 101101₂ + 11011₂; 2) 3657₈ + 1426₈.
Çözümü gösterÇözümü gizle
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 ✓
Hesapla: 1) 9AE₁₆ + 5C7₁₆; 2) 3421₅ + 2434₅.
Çözümü gösterÇözümü gizle
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.
- aeksilenin rakamı
- cçıkanın rakamı
- btaban
İkilikte en sık görülen durum: 10₂ − 1₂ = 1₂, yani 2 − 1 = 1.
Hesapla: 1) 101101₂ − 10110₂; 2) 5203₈ − 1647₈.
Çözümü gösterÇözümü gizle
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 ✓
Hesapla: A03₁₆ − 4F8₁₆.
Çözümü gösterÇözümü gizle
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.
- 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.
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Çözümü gizle
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₂ ✓
1) 47₈ · 6₈
2) 110110₂ : 110₂
Çözümü gösterÇözümü gizle
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.
11011₂ + 37₈ + 1A₁₆ ifadesinin değerini ikilik sistemde yazın.
A) 1010100 B) 1001100 C) 1010010 D) 1100100 E) 1010110
Çözümü gösterÇözümü gizle
Toplam: 27 + 31 + 26 = 84.
84 = 64 + 16 + 4 = 2⁶ + 2⁴ + 2² = 1010100₂.
Doğru cevap: A) 1010100.
101₂ · 7₈ + 1F₁₆ ifadesinin değerini sekizlik sistemde yazın.
Çözümü gösterÇözümü gizle
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.
- 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.
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Çözümü gizle
2) 11 + 7 = 18 > 15: 10010₂ → beşinci bit kaybolur, hücrede 0010₂ = 2 = 18 − 16 kalır.
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:
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.