اعداد باینری

شما جزء کدام دسته هستید؟

این یادداشت به تدریج کامل خواهد شد


من از قبل می‌دانستم که کامپیوترها از منطق صفر و یک استفاده می‌کنند. هر اطلاعاتی که روی کامپیوترها وجود دارد از یک متن ساده بگیر تا یک فایل موسیقی یا یک فیلم سینمایی در دنیای کامپیوتر رشته‌ای از اعداد صفر و یک است اما سوالی که برام پیش آمده بود این بود که چرا در علم کامپیوتر از سیستم باینری استفاده میکنیم؟

در الکترونیک و در سیستم‌های کامپیوتری و دیجیتالی، به منظور انتقال اطلاعات از اعداد دودویی یا باینری (binary) که در قالب 0 و 1 هستند استفاده می‌شود.

جواب ساده و خلاصه سخت افزار و قوانین فیزیک است. اطلاعات در سخت افزار به شکل سیگنال‌های الکتریکی جابجا می‌شود. پس منطقا ما دو حالت خواهیم داشت، وجود جریان‌ و عدم وجود جریان یا همان صفر و یک.

تبدیل اعداد دسیمال به باینری

تبدیل اعداد دسیمال به باینری کار سختی نیست. تنها کاری که باید انجام بدیم تقسیم متوالی عدد مورد نظر به دو است. به عنوان مثال می‌خواهیم عدد ۱۰ را در دستگاه باینری بنویسم.

  • اول از همه عدد ۱۰ را به ۲ تقسیم می‌کنیم. خارج قسمت می‌شود ۵ و باقیمانده می‌شود ۰ پس ما عدد صفر را می‌نویسم.
  • در گام بعدی خارج قسمت را به ۲ تقسیم می‌کنیم. اینبار خارج قسمت می‌شود ۲ باقیمانده می‌شود ۱ پس عدد ۱ را می‌نویسم.
  • یکبار دیگر باقیمانده را به ۲ تقسیم میکنیم، خارج قسمت می‌شود ۱ و باقیمانده می‌شود صفر، پس یک صفر دیگر هم می‌نویسم و از آنجا که خارج قسمت برابر با ۱ است ما هم عدد یک را قرار می‌دهیم تا به ۱۰۱۰ برسیم.
تبدیل دسیمال به باینری به روایت تصویر

به عنوان یک برنامه نویس تازه‌کار که در ابتدای راه است و سعی می‌کند هرچیزی را برای خودش تبدیل به یک چالش برنامه نویسی کند تصمیم گرفتم کدی بنویسم که یک عدد دسیمال را بگیرد و مقدار باینری‌اش را برگرداند.

کد من به زبان #C

در دو خط اول یک عدد صحیح از کاربر میگیرم و دخل یک متغییر به نام number ذخیره میکنم. در ادامه یک متغییر موقتی به نام temp هم تعریف کردم که از جنس string هست.از خط ۶ تا ۱۷ حلقه while را داریم. اول از همه number را به ۲ تقسیم میکنیم اگر باقیمانده برابر با صفر شد ۰ را به متغییر temp اضافه میکنم در غیر اینصورت ۱ را به temp اضافه میکنیم. فکر میکنم الان مشخض شد که چرا temp را از نوع string تعریف کردم.

در نهایت مقدار number را به number / 2 تغییر میدهیم و این حلقه تا زمانی که مقدار number کوچکتر مساوی ۱ بشود ادامه دارد. اما کد ما یک مشکل کوچک دارد. عدد باینری به صورت برعکس داخل متغییر temp ذخیره می‌شود. یعنی به ازای عدد ۱۰ داخل متغییر temp عدد ۰۱۰۱ را خواهیم داشت.

در خط ۱۸ و ۱۹ متغییر temp را به Array تبدیل میکنیم و با استفاده از متد Reverse برعکسش میکنیم. بعد در خط ۲۱ تا ۲۵ Array برعکس شده را داخل یک متغییر جدید بنام newStr ذخیره میکنیم و در خط ۲۶ مقدار باینری را نمایش میدیم.

تبدیل اعداد باینری به دسیمال

تبدیل اعداد باینری به دسیمال هم کار راحتی است. برای انجام اینکار باید به ارزش مکانی اعداد توجه کنیم. اولین عدد در سمت چپ بیشترین ارزش مکانی را دارد و اولین عدد در سمت راست کمترین ارزش را و اگر از سمت راست به چپ حرکت کنیم ارزش مکانی هر عدد دو برابر عدد قبلی‌اش است.یعنی ارزش مکانی اولین عدد از سمت چپ برابر است با ۲ به توان ۰، عدد دوم ۲ به توان ۱ عدد سوم ۲ به توان ۲ و الی به آخر.

برای به دست آوردن مقدار دسیمال اعداد باینری باید صفر و یک‌ها را در ارزش مکانی‌شان ضرب کنیم و با هم جمع کنیم. اگر متوجه توضیحات من نشدید تصویر زیر می‌تواند کمک کند.

تبدیل عدد باینری به دسیمال

مثل تبدیل اعداد دسیمال به باینری برای تبدیل اعداد باینری به دسیمال هم کد نوشتم.

کد من به زبان #C

نوشته اعداد باینری اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

دیدگاهتان را بنویسید