تبدیل اعداد دسیمال به باینری
نکته : این پست مکملی برای پست عملگرهای بیتی می باشد.
اعداد باینری در دنیای کامپیوتر معمولا به صورت گروه های هشت رقمی یا بیتی هستند. برای تبدیل اعداد دسیمال به باینری ابتدا باید هشت فضای خالی برای قرار دادن این هشت رقم ایجاد کنید. فرض کنید می خواهیم عدد 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
سلام استاد خسته نباشید، مطالب عالی هست. بنده کتاب اموزش سی شارپ رو از کتاب راه تهیه کردم میخواهم فول زبان سی شارپ شوم ، آیا تسلط 100درصدی به همین کتاب شما به چیز دیگری هم لازم خواهم داشت یا همین کتاب همه جوانب رو پوشش داده؟ ممنون میشوم اگر جواب بدید
عالی، روان
ممنونم از شما
سلام خسته نباشید چرا برای عدد 7 درست درنمیاد تو ماشین حساب زدم دسیمال به باینری جوابش شد111 ولی با این روش نمیشه
الان اینجا عدد مورد نظر7 کوچکترش 6 یک میگیره بعد شش از هفت کم میشه یک میمونه به جای یک، یک میزاریم
سلام، مرسی
مشخصه که مطلب رو با دقت نخوندین
عرض کردم که بین اعداد بالا، یعنی اعداد 1، 2، 4، 8، 16 و … بزرگترین عددی که از عدد مورد نظر ما کوچیکتر باشه. اینجا میشه عدد 4
باینری 7 میشه 111
خب 7 – 4 = 3 … بعد 3 – 2 = 1 … بعد 1 هم که خودش رو می نویسیم
الان همون اعداد 1 و 2 و 4 رو با هم جمع کنید میشه 7
ممنونم، خیلی ساده و روان توضیح دادید، درود بر شما
سلام استاد این دستور کد در پایتون کار میکنه ؟ تست کردم نشد
سلام، تو پایتون لازم نیست این همه کد بنویسین. یه تابع داخلی به نام ()bin این کار رو انجام میده
سپاس فراوان
سلام با سپاس از مطالب خوبتون. میخواستم ببینم داخل پایتون این کد چطوری محاسبه شده؟
سلام
حالا شما تبدیل اعداد باینری به دسیمال رو بخونید تا بفهمید چطور این 0 و 1 ها میشن 12
چرا باید 8 فضای خالی بزاریم نمیشه 9 تا بزاریم ؟؟؟؟؟؟؟؟؟
سلام عددی مثل53 که زوج نیست رو چجوری باید بدست بیاریم
سلام، کاری به زوج و فرد نداره. باینری عدد 53 به صورت زیره
قرمز ها رو جمع بزنید
ممنون