C# Console decimal(onluk) bir sayıyı ikilik(binary) bir sayıya dönüştürme
Algoritma
- Başla
- sayi, i = 0, top = 0 değişkenlerini al
- sayi değerini gir
- sayi > 2 olduğu sürece 8. adıma kadar olan işlemleri yaptır.
- top = top + ( ( sayi % 2 ) * ( 10 ^ i ) )
- sayi = sayi / 2;
- i değişkenini arttır.
- top = top + ( sayi * ( 10 ^ i ) ) işlemini yap
- Yazdır top
- Bitir
Bu soru, kitapta çok kez çeşitlerini çözdüğümüz sorulardan biridir.Bildiğimiz üzere, bilgisayar 2’lik ( binary ) sayılarla işler. O zaman 10’lk tabandaki sayıyı çevirmesi gerekir. Bu durum matematik derslerinde taban değiştirme olarak da daha önce karşımıza çıkmıştır. Burada girilen 10’luk tabandaki sayı 2’ye böldürülüp kalanı 10’nun katlarına sırasıyl (0 dan itibaren) çarptırılıp bir değişkende toplanmıştır.
Aslında bu soruyu dizi mantığıyla yapmak daha kolaydır fakat burada bir kandırmaca yaparak soruyu çözüyoruz. Buna göre topladığımız sayılar yine 10’luk sistem olmasına rağmen ekrana basınca 2’lik gibi duracaktır.Algoritma, matemtik ve bilgisayar programcılığı böyle bir şeydir.
Kod Yapısı
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace dmg
{
class Program
{
static void Main(string[] args)
{
int sayi;
int i = 0;
double top = 0;
Console.WriteLine("Sayıyı giriniz = ");
sayi = Convert.ToInt32( Console.ReadLine() );
while( sayi > 2 )
{
top = top + ( sayi % ) * Math.Pow(10, i);
sayi = sayi / 2;
i++;
}
top = top + sayi/2 * Math.Pow(10,i);
Console.WriteLine("Binary Sayı = " + top);
Console.ReadKey();
}
}
}
24 Aralık 2017