تبدیل اعداد دسیمال به باینری
نکته : این پست مکملی برای پست عملگرهای بیتی می باشد.
اعداد باینری در دنیای کامپیوتر معمولا به صورت گروه های هشت رقمی یا بیتی هستند. برای تبدیل اعداد دسیمال به باینری ابتدا باید هشت فضای خالی برای قرار دادن این هشت رقم ایجاد کنید. فرض کنید می خواهیم عدد 54 را به معادل باینری آن تبدیل کنیم:
برای این کار یک سری عملیات ساده تکراری لازم است. اعداد باینری مبنای 2 هستند، بنابراین از عدد 2 به عنوان مبنا استفاده کرده و توان آن را از صفر به صورت زیر شروع می کنیم:
سپس اعداد 2 را به توان رسانده و معادل آن را به صورت زیر می نویسیم :
به اعداد بالا توجه کنید. هر عدد دو برابر عدد قبل از خودش است. حال کارمان را شروع می کنیم. در بین اعداد بالا، بزرگترین عددی، که از عدد مورد نظر ما، بزرگتر نباشد، را پیدا می کنیم. در بین اعداد بالا عدد 32 از عدد 54 که عدد مورد نظر ماست بزرگتر نیست. بر روی این عدد یک عدد 1 به صورت زیر قرار می دهیم.
حال عدد 32 را از عدد 54 کم می کنیم (22=32-54). در این قسمت عدد 22 عدد مورد نظر ما می شود. در بین اعداد بالا بزرگترین عددی که از عدد 22 بزرگتر نباشد را پیدا کرده و عدد 1 را بالای آن می نویسیم.
سپس عدد 16 را از عدد 22 کم می کنیم (6=16-22) که باقیماند آن عدد 6 است که بزرگترین عدد در بین اعداد بالا که از 6 بزرگتر نباشد عدد 4 است. عدد 1 را بالای عدد 4 قرار می دهیم.
و در نهایت عدد (2=4-6) 2 عدد موردنظر ما می شود که تنها عدد بزرگ در بین اعداد بالا که از عدد 2 بزرگتر نباشد همان عدد دو است. در بالای آن نیز عدد 1 قرار می دهیم.
کار ما به پایان رسید و فضاهای خالی را با عدد صفر پر می کنیم.
عدد به دست آمده 00110110 معادل باینری عدد 54 است. به این نکته توجه کنید که اعداد بزرگتر به بیت های بیشتری برای تبدیل نیاز دارند. برای اضافه کردن بیت جدید کافیست که بزرگترین عدد را دو برابر کنید و در بیت جدید بنویسید. مثلا برای عدد 312 کافیست که عدد 128 را دو برابر کنید و در بیت جدید به صورت زیر بنویسید :
حال اگر بخواهید، مراحل بالا را با استفاده از کدنویسی انجام دهید، باید به صورت زیر عمل کنید :
using System; namespace DecimalToBinary { class Program { static void Main(string[] args) { int number; Console.Write("Enter a Number : "); number = int.Parse(Console.ReadLine()); int quotient; string remainder = ""; while (number >= 1) { quotient = number / 2; remainder += (number % 2).ToString(); number = quotient; } string binary = ""; for (int i = remainder.Length - 1; i >= 0; i--) { binary = binary + remainder[i]; } Console.WriteLine("The Binary format for given number is {0}", binary); Console.Read(); } } }
Enter a Number : 54 The Binary format for given number is 110110
این درسته؟
آقای ابراهیمی سلام،
نه تنها روی کتاب (که طبیعتا حقتونه) بلکه روی سایت هم که محتوای آموزشی عمومی داره امکان راستکلیک را بستید که این خواننده را مجبور میکنه هر مثالی را در محیط کنسول تایپ کنه. قاعدتا این کار به جز اتلاف وقت خواننده نه ارزش معنوی داره و نه مادی.
سلام
کدها رو انتخاب و با Ctrl+C کپی کنید
عالی بود با تشکر
باسلام و عرض خسته نباشید بنده این برنامه رو تایپ و اجرا کردم ولی هیچ عددی داخل cmd ظاهر نمیشه می خواستم چرا این اتفاق می افته برنامه مشکلی نداره چند بار برنامه رو بررسی کردم ولی مشکلی پیدا نکردم
سلام، این محیط کنسول #C ه . برنامه منتظر می مونه که شما عددی رو وارد کنید و Enter بزنید
ممنوووووووووووووون
میشه این برنامه رو توضیح بدید؟
میخوام مطالبو کپی کنم نمیشه
میشه #Cدر فصای سرور کار کرد
سلام واقعا مطالبتون عالیه
سلام. خسته نباشید. من دقیقا برنامه بالا را در سی شارپ نوشتم اما اجرا نشد و ارور داد… ارورش می گه که i وجود ندارد [binary=binary+remainder[i
سلام، بنده الان تست کردم، موردی نداره