ünite 5 · Klasik Algoritmalar
·
ders 5.4
İkilik tabana çevirme
2'ye böl, kalanları tersten oku: 13 → 1101.
8 dk
19 / 22
tamamlandı
Bilgisayar 0 ve 1 ile sayar. Onluk bir sayıyı ikiliğe çevirme algoritması: 2'ye böl, kalanı yaz, bölüm 0 olana kadar tekrarla, kalanları tersten oku.
13 / 2 = 6 kalan 1
6 / 2 = 3 kalan 0
3 / 2 = 1 kalan 1
1 / 2 = 0 kalan 1 → tersten: 1101
Tersten okumak
Kalanları bir metnin başına ekleyerek ("ön ekleme") sıra kendiliğinden ters olur: sonuç ← kalan + sonuç.
Geri çevirme
1101 → 1×8 + 1×4 + 0×2 + 1×1 = 13. Sağdan sola basamak değeri ikiye katlanır.
Blog'daki "ikilik tabanı parmakla saymak" notu aynı fikri elle anlatıyor; bu ders onun algoritması.
akış şeması
elips: başla/bitir · dikdörtgen: işlem · paralelkenar: girdi/çıktı · baklava: karar
flowchart TD
A[/n oku/] --> B[sonuç = boş]
B --> C{n #gt; 0 ?}
C -- Evet --> D[kalan = n mod 2]
D --> E[sonuç = kalan + sonuç]
E --> F[n = n / 2]
F --> C
C -- Hayır --> G[/sonuç yaz/]
sözde kod
adımlar
1OKU n2sonuç ← ""3İKEN n > 04 kalan ← n MOD 25 sonuç ← kalan + sonuç // başa ekle6 n ← n / 2 // tam bölme7DÖNGÜ SONU8YAZ sonuç
aynısı C# ile
C#
1int n = 13;2string sonuc = "";3while (n > 0)4{5 sonuc = (n % 2) + sonuc;6 n = n / 2;7}8Console.WriteLine(sonuc);
adım adım izleme
Kutuların her adımdaki değeri. Kağıtta izleme tablosu tutarken tam bunu yaparsın.
| # | satır | n | sonuç | not |
|---|---|---|---|---|
| 1 | n=13: kalan 1 | 6 | 1 | sonuç = "1", n = 6 |
| 2 | n=6: kalan 0 | 3 | 01 | sonuç = "01", n = 3 |
| 3 | n=3: kalan 1 | 1 | 101 | sonuç = "101", n = 1 |
| 4 | n=1: kalan 1 | 0 | 1101 | sonuç = "1101", n = 0 |
senin sıran
Aynı algoritmayı 8'lik ve 16'lık taban için genelle (16'lıkta 10–15 için A–F harfleri gerekir). 255'i üç tabanda da yaz.
kendini sına n = 0 için algoritma ne yazar? Bu doğru mu?
Döngü hiç dönmez, boş metin yazar. Doğru cevap "0"; n = 0 durumunu ayrıca ele almak gerekir.
tamamlandı
İşaret bu tarayıcıda kalır. XP için
giriş yap — her ders +15 XP.