Bir sayıyı istenilen tabana çevirme

Visual Studio'da yeni bir Asp.net projesi açıp aşağıdaki gibi iki metin kutusu, bir Label ve bir Button ekleyelim. İlk metin kutusuna modu alınacak sayıyı gireceğiz, ikinci metin kutusuna da tabanı gireceğiz. Çevir düğmesine tıklayınca hesaplayıp lblSonuc etiketine yazdıracağız.  

İlk metin kutusunun ID değerini txtSayi, ikinci metin kutusunun ID değerini txtTaban yaptık, sonra eklediğimiz butonun ismini btnCevir, etiketimizin ID değerini de lblSonuc yaptık. 




Mantığımız gayet basit bir döngü işleminde sayıyı sürekli tabana bölerek bölümü alacağız. Mod (%) operatörü ile de sayının tabana bölümünden kalanı bulacağız.



Örneğin 5 sayısını, ikilik (binary) tabana nasıl çeviririz, sürekli 2'ye böleriz. Yukarıdaki resme baktığınızda en sondaki bölümden başlayarak kalanların sırayla yazıldığını görüyoruz. Biz programlamada bölüp kalanları bir string değişkende depolayacağız, en son bölümü de ilave edip daha sonra stringi ters çevireceğiz.

         while (sayi >= taban)
            {
                kalan = sayi % taban;
                sayi = sayi / taban;
                sonucstr += kalan.ToString();
            } 

          sonucstr += sayi.ToString();
 
Yukarıdaki kod bloğunda while döngüsü içinde sayıyı tabana bölerek ve modunu alarak sonucstr'de kalan değerleri depoluyoruz. while döngüsü sayi>=taban olduğu sürece devam ediyor, yani sayımız tabandan küçük olduğunda döngüden çıkacak.     sonucstr += sayi.ToString(); satırı ile de en son bölümü kalan değerleri depoladğımız sonucstr'ye ekliyoruz.


protected void btnCevir_Click(object sender, EventArgs e)
        {
            int sayi = int.Parse(txtSayi.Text);
            int taban = int.Parse(txtTaban.Text);
            int kalan;
            string sonucstr="", sonucstr2="";
 
            while (sayi >= taban)
            {
                kalan = sayi % taban;
                sayi = sayi / taban;
                sonucstr += kalan.ToString();
            } 
 
            //kalanları yazdık, en sondaki bölümü de ekliyoruz
            sonucstr += sayi.ToString();
 
            //ters çeviriyoruz, sonucstr=001, sonucstr2=100 olacak 
            for (int i = sonucstr.Length - 1; i >= 0; i--)
                sonucstr2 += sonucstr[i];
            lblSonuc.Text = sonucstr2.ToString();
        }







Mutlu kodlamalar,
Oğuzhan TAŞ
Aralık, 2018


Bookmark and Share