Create Binary To Decimal Converter in C#

Posted by ေတဇာလင္း Monday, 5 September 2016 0 comments

မိတ္ေဆြ၊ ညီအစ္ကို၊ ေမာင္ႏွမအားလံုးပဲ မဂၤလာပါဗ်ာ။ ဒီေန႔ေတာ့ က်ေနာ္တို႔ Binary Number တစ္ခုကို Decimal Number အျဖစ္ ဘရ္လို ေျပာင္းလဲ ယူႏိုင္မလဲဆိုတာေလးကို ေလ့လာၾကည့္ၾကမွာ ျဖစ္ပါတရ္။ Coding ေရးသားတဲ့အခါမွာ Visual Studio က ေထာက္ပံ့ေပးထားတဲ့ Method ေတြကို အသံုးမျပဳပဲ အလြယ္ကူဆံုးနည္းလမ္းတစ္ခုနဲ႔ ကိုယ္ပိုင္ Method တစ္ခု တည္ေဆာက္ၿပီး ေလ့လာၾကည့္ၾကမွာျဖစ္ပါတရ္။
Logic ပိုင္း ေထြေထြထူးထူးမရွိပါဘူး။ သာမာန္အေတြးကိုပဲ ရုပ္လံုးေဖာ္လုိက္တာပါ။ Coding Flow ေလးကို ၾကည့္ၾကည့္မရ္ဗ်ာ။
  1. Decimal ေျပာင္းမွာျဖစ္တဲ့အတြက္ က်ေနာ္တို႔ ေျပာင္းလဲခ်င္တဲ့ Binary ကို 10 နဲ႔စားမရ္။
  2. ရလာတဲ့ စားလဒ္(Quotient)ကို သုညနဲ႔မညီမခ်င္း Loop ပတ္ၿပီး ထပ္ခါတလဲလဲ 10 နဲ႔ စားေနမရ္။
  3. Loop ပတ္တိုင္း Dec += (int)(remainder * Math.Pow(2, power)); ဆိုတဲ့ formula ကိုျဖတ္ၿပီး ရလာတဲ့ Number တစ္ခုကိုေတာ့ container တစ္ခုထဲ ေခတၱထည့္သိမ္းထားမရ္ေပါ့။
  4. ေနာက္ဆံုး စားလဒ္(Quotient)ဟာ သုညနဲ႔ညီသြားတဲ့အခ်ိန္မွာ Loop ကို ရပ္မရ္။ ဒီအခ်ိန္မွာေတာ့ Decimal Number တစ္ခုကို က်ေနာ္တို႔ ရရွိေနပါၿပီ။ နားလည္ႏိုင္ၾကလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။
Logic အနည္းငယ္စိမ္းေနမရ္ဆိုရင္ေတာ့..... http://programmingknowledge.blogspot.com/2014/07/5-number-system-conversions-from-binary.html Pageမွာ ပံုနဲ႔တကြ ရွင္းထားတာေလး ရွိပါတရ္။ ေလ့လာၾကည့္ႏိုင္ပါတရ္ဗ်ာ။ အခုေတာ့ Coding အပိုင္းေလး ဆက္ၾကမရ္။ GUI ကိုေတာ့ က်ေနာ္ ေအာက္က ပံုစံအတိုင္း ပံုေဖာ္ထားပါတရ္။ မိတ္ေဆြတို႔ေတာ့ စိတ္ႀကိဳက္ ပံုေဖာ္ ဖန္တီးႏိုင္ပါတရ္။
Coding ေလးကို ေလ့လာၾကည့္လိုက္ၾကပါအံုးဗ်ာ။
using System;
using System.Windows.Forms;

namespace NumberTypeConverter
{
    public partial class BinaryConversion : Form
    {
        public BinaryConversion()
        {
            InitializeComponent();
        }

        public int BinaryToDecimal(int Bi)
        {
           int Dec=0, power=0, remainder, Quotient= Bi;
           while (Quotient != 0)
            {
                remainder = Quotient % 10;
                Quotient /= 10;
                Dec += (int)(remainder * Math.Pow(2, power));
                ++power;
            }
            return Dec;
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            txtDecimal.Text = BinaryToDecimal(int.Parse(txtBinary.Text)).ToString();
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtBinary.Clear();
            txtDecimal.Clear();
            txtBinary.Focus();
        }
    }
}   
ခက္ခက္ခဲခဲ ဘာမွ မရွိပါဘူးဗ်ာ။ ေအာက္ပါအေတြးကို ပံုေဖာ္ထားတာပါ။
ပိုၿပီးနားလည္သြားေအာင္ က်ေနာ္ Trace လိုက္ျပပါ့မရ္။
BinaryToDecimal(int Bi)
 Bi=1101
loop1 => while(1101 != 0) => true
   remainder  = 1101%10 = 1
   Quotient = 1101/10 = 110
   Dec = (int)(1 * pow(2,0) = 1
loop2 => while(110 != 0) => true
   remainder  = 110%10 = 0
   Quotient = 110/10 = 11
   Dec = (int)(1 + 0 * pow(2,1) = 1
loop3 => while(11 != 0) => true
   remainder  = 11%10 = 1
   Quotient = 11/10 = 1
   Dec = (int)(1 + 1 * pow(2,2) = 5
loop4 => while(1 != 0) => true
   remainder  = 1%10 = 1
   Quotient = 1/10 = 0
   Dec = (int)(5 + 1 * pow(2,3) = 13
loop5 => while(0 != 0) => false
so, Dec = 13
Coding ေလးနဲ႔ ScreenShoot ေလးကို ၾကည့္လိုက္ရင္ေတာ့ မိတ္ေဆြတို႔အေနနဲ႔ ရွင္းျပစရာမလိုေလာက္ေအာင္ နားလည္သြားၾကလိမ့္မရ္လို႔ ထင္ပါတရ္ဗ်ာ။ မိတ္ေဆြအားလံုး ေလ့လာျခင္းျဖင့္ ေက်နပ္ႏိုင္ၾကပါေစဗ်ာ။

0 Responses so far.

Post a Comment