canlı ~/duyurular $
Algoritma müfredatı
ünite 5 · Klasik Algoritmalar · ders 5.4

İkilik tabana çevirme

2'ye böl, kalanları tersten oku: 13 → 1101.

8 dk 19 / 22

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ırnsonuç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.

Canlı Kod'da C# ile dene
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.
İşaret bu tarayıcıda kalır. XP için giriş yap — her ders +15 XP.