اعداد باینری

اعداد باینری | نقش اعداد دودویی در سیستم‌های دیجیتال8 دقیقه مطالعه

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

تاریخچه‌ی اعداد باینری

استفاده از دستگاه نمایش اعداد دودویی یا اعداد باینری، در مدارهای سوئیچینگ و الکترونیک دیجیتال و ساختار کامپیوترها، عمری کم‌تر از ۱۵۰ سال دارد؛ با این حال، قدمت استفاده از اعداد دودویی در سایر عملیات ریاضی، مانند محاسبه‌ی سری‌های متناهی، علم وزن و عروض و همچنین پیام‌رسانی در تمدن‌های باستانی مانند مصر، چین و هند به بیش از چهار هزار سال می‌رسد.

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

نقطه‌ی عطف استفاده از اعداد باینری، اختراع جبر بول (Boolean Algebra) توسط جرج بول، ریاضیدان انگلیسی، در قرن نوزدهم میلادی بود. جبر بول، پایه و اساس استفاده‌ی قاعده‌مند از دستگاه اعداد باینری برای بیان و حل آسان‌تر مسائل منطق به روش جبری است. همچنین جبر بول، پایه و اساس اختراع مدارات سوئیچینگ و سیستم‌های دیجیتال امروزی است.

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

در هر سیستم نمایش اعداد در مبنای $r$، به طور کلی $r$ رقم وجود دارد که شامل ۰ تا $r-1$ می‌شود. برای نمایش هر عدد بالاتر از این ارقام، باید از مفهوم «ارزش مکانی» استفاده شود. ارزش مکانی هر رقم برابر است با $r^{n}$ که $n$ با شروع از صفر، شماره‌ی جایگاه رقم از سمت راست می‌باشد.

در اعداد مبنای دو، ارقام مورد استفاده ۰ و ۱ می‌باشند و ارزش مکانی جایگاه رقم‌ها به ترتیب از راست به چپ $ \small \left. …,2^{2},2^{1},2^{0}\right. $ می‌باشند.

ارزش مکانی سیستم اعداد / Positional notation

اعداد باینری کسری

در صورتی که اعداد دودویی دارای قسمت‌های کسری باشند؛ با استفاده از ممیز یا نقطه (Binary point) ارقام بخش صحیح از ارقام بخش کسری جدا می‌شوند و ارزش مکانی ارقام بخش کسری بعد از ممیز، از چپ به راست کاهش می‌یابد.

بنابراین ساختار ارزش مکانی اعداد باینری کسری به این صورت است: $ \small \left. …2^{2},2^{1},2^{0}/2^{-1},2^{-2},2^{-3}… \right. $

تبدیل مبنا از اعداد باینری به اعداد ده‌دهی

برای تبدیل مبنا از اعداد باینری به اعداد ده‌دهی کافی است مراحل زیر را دنبال کنیم:

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

این روش تنها مختص به اعداد باینری نیست و برای هر عددی در مبنای غیر ده صحیح می‌باشد.

به طور مثال:

$\small\left.(1110)_{2} = 0\times2^{0} + 1\times2^{1} + 1\times2^{2} + 1\times2^{3} = 14\right.$

$\small\left.(100/01)_{2} = 1\times2^{-2} + 0\times2^{-1} + 0\times2^{0} + 0\times2^{1} + 1\times2^{2} = 4.25\right.$

تبدیل مبنا از اعداد ده‌دهی به اعداد باینری

برای تبدیل اعداد صحیح بدون علامت ده‌دهی به یک عدد در مبنای‌ ۲ از روش تقسیم‌های متوالی استفاده می‌شود. مراحل تقسیم‌های متوالی عبارتند از:

  1. عدد ده‌دهی را بر ۲ تقسیم می‌کنیم.
  2. اگر خارج‌قسمت از صفر بزرگ‌تر بود آن را بر ۲ تقسیم می‌کنیم.

این روند را آنقدر ادامه می‌دهیم تا در نهایت خارج قسمت تقسیم برابر با صفر شود. در پایان، باقی‌مانده‌ی تقسیم‌های انجام شده، ارقام عدد در سیستم دودویی را از راست به چپ (از پایین‌ترین ارزش مکانی به بالا‌ترین ارزش مکانی) تشکیل می‌دهند.

به طور مثال:

با توجه به محاسبات نشان داده شده:

مراحل عملیات تقسیم‌های متوالی برای تبدیل به مبنای 2

$\small\left.13 = (1101)_{2}\right.$

همچنین برای تبدیل بخش اعشاری اعداد دهدهی به بخش کسری در مبنای ۲، از روش ضرب‌های متوالی استفاده می‌شود. در روش ضرب‌های متوالی، قسمت اعشاری را در عدد ۲ ضرب کرده و قسمت صحیح حاصل‌ضرب را نگه می‌داریم و سپس مرحله قبل را برای قسمت اعشاری حاصل‌ضرب تکرار می‌کنیم. به ترتیب قسمت‌های صحیح حاصل‌ضرب‌های متوالی از اول به آخر، ارقام عددکسری باینری را از چپ به راست (از بیشترین ارزش‌ مکانی تا کمترین ارزش مکانی) تشکیل می دهند. این روند را تا جایی که دقت موردنظر برسیم یا قسمت اعشاری حاصل‌ضرب بدست آمده صفر باشد، ادامه می‌دهیم.

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

برای مثال برای محاسبه‌ی معادل باینری عددی اعشاری $ \small \left. 0.534 \right. $:

$\small\left.0.534\times2 = 1.068 \Rightarrow 1\right.$

$\small\left.0.068\times2 = 0.136 \Rightarrow 0\right.$

$\small\left.0.136\times2 =0.272 \Rightarrow 0\right.$

همانطور که نشان داده شد، عدد $ \small \left. 0.534 \right. $ در مبنای ۲ با دقت سه رقم، برابر با $ \small \left. 0/100 \right. $ می‌باشد؛ اما همانطور که گفته شد، ممکن است این عدد در مبنای دو نمایش مختوم نداشته باشد.

 تبدیل از مبنای $۲$ به مبنای $۲^{n}$

به طور کلی، برای تبدیل مبنا بین دو مبنای غیر ده، باید از مبنای ده به عنوان واسطه استفاده کرد؛ اما در مورد تبدیل مبنا میان اعداد در مبنای $۲$ و توان‌های صحیح $۲$، یک استثنا وجود دارد.

برای تبدیل یک عدد از مبنای $۲$ به مبنای $۲^{n}$:

  1. در صورتی که تعداد ارقام قبل از ممیز (بخش صحیح) یا بعد از ممیز (بخش کسری) مضربی از n نباشد با اضافه کردن صفر به سمت چپ بخش صحیح و سمت راست بخش کسری، تعداد ارقام هر بخش را به نزدیک‌ترین مضرب n می‌رسانیم.
  2. از اولین رقم بعد از ممیز به سمت چپ در بخش صحیح و از اولین رقم بعد از ممیز به سمت راست در بخش کسری ارقام را n رقم، n رقم جدا و دسته‌بندی می‌کنیم.
  3. معادل هر دسته‌ی n تایی در مبنای $۲^{n}$ را به جای دسته قرار می‌دهیم.

برای نمونه:

برای تبدیل عدد $ \small \left. (11001/01)_{2} \right. $ به مبنای ۱۶، ابتدا تعداد ارقام هر دو بخش کسری و صحیح را با اضافه کردن صفرهای بی‌ارزش به مضرب‌هایی از چهار می‌رسانیم. پس از جدا کردن ارقام به دسته‌های چهارتایی، (توجه کنید که $ \small \left. 16 = 2^{4} \right. $) با ترتیبی که توضیح داده شد، معادل «Hexadecimal» هر دسته را به جای آن قرار می‌دهیم.

$(\underset{1}{\underbrace{0001}}\underset{9}{\underbrace{1001}}/\underset{4}{\underbrace{0100}})_{2} = (19/4)_{16}$

از این ویژگی برای نمایش اعداد باینری طولانی، مثل آدرس‌دهی به خانه‌های حافظه درکامپیوترها، برای خواناتر شدن و راحتی بیش‌تر استفاده می‌شود؛ چراکه حافظه‌های سیستم‌های دیجیتال با استفاده از اعداد باینری شماره‌گذاری می‌شوند و به علت زیاد بودن تعداد سلول‌های حافظه در کامپیوتر‌ها، نمایش این آدرس‌ها با اعداد باینری، می‌تواند بسیار سخت و گیج‌کننده باشد.

تبدیل از مبنای $۲^{n}$ به مبنای $۲$

برای تبدیل اعداد از مبنای $۲^{n}$ به مبنای $۲$ باید مراحل قسمت قبل را، به صورت برعکس انجام داد. بنابراین به جای هر رقم، معادل n رقمی آن را در مبنای $۲$ قرار می‌دهیم.

به عنوان مثال برای تبدیل یک عدد «octal» (عدد در مبنای $ \small \left. 2^{3} = 8 \right. $) مانند $ \small \left. (362/51)_{8} \right. $ به یک عدد باینری، به جای هر رقم آن، معادل دودویی ۳ رقمی آن را قرار می‌دهیم.

$(\underset{\overbrace{011}}{3}\underset{\overbrace{110}}{6}\underset{\overbrace{010}}{2}/\underset{\overbrace{101}}{5}\underset{\overbrace{001}}{1})_{8} = (011110010/101001)_{2} = (11110010/101001)_{2}$

اعداد باینری در دنیای دیجیتال

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

ذخیره اعداد دودویی در سیستم‌های دیجیتال

کوچک‌ترین واحد ذخیره سازی اطلاعات در سیستم‌های دیجیتال «بیت» یا «bit» می‌باشد. هر بیت، قابلیت ذخیره‌ی دو حالت صفر یا یک را دارد. حافظه‌ی کامپیوتر‌ها و پردازنده‌های دیجیتال از مجموعه‌ی این بیت‌ها ساخته شده است. واحد شناخته شده و کاربردی دیگر ذخیره حافظه «بایت» یا «byte» است. این واحد تشکیل شده از هشت بیت متوالی می‌باشد. اطلاعات، بسته به نوع آن‌ها در تعداد مختلفی از بیت‌ها ذخیره می‌شوند در اکثر مواقع، داده‌های مورد استفاده در کامپیوتر‌ها، از یک تا چندین بایت حافظه را اشغال می‌کنند؛ اما در برخی از کاربرد‌ها، مثل طراحی میکرو‌کنترلر‌ها و میکروپروسسورها، که بهینه‌سازی استفاده از حافظه از اهمیت بالایی برخوردار است، گاهی تنها از یک بیت، یا قسمتی از یک بایت را برای ذخیره‌ی اطلاعات استفاده می‌کنند.

برای بیان و نمایش تعداد زیادی از بایت‌ها با بیت‌ها، از پسوند‌هایی مثل «Kilo» و «Mega» و «Giga» استفاده می‌شود. در جدول زیر مقدار معادل برخی از واحدهای‌ حافظه بیان شده است.

واحد حافظهمقدار معادل
$ \small \left. 1 \right. $ nibble$ \small \left. 4 \right. $ bits
$ \small \left. 1 \right. $ Byte$ \small \left. 8 \right. $ bits
$ \small \left. 1 \right. $ Kilobyte$ \small \left. 2^{10} \right. $ Bytes
$ \small \left. 1 \right. $ Megabyte$ \small \left. 2^{20} \right. $ Bytes
$ \small \left. 1 \right. $ Gigabyte$ \small \left. 2^{30} \right. $ Bytes
$ \small \left. 1 \right. $ Terabyte$ \small \left. 2^{40} \right. $ Bytes

پردازش اعداد دودویی در سیستم‌های دیجیتال

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

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

نمایش سطوح منطقی ولتاژ برای مدار باتغذیه ۵ ولت

  • سطح «Valid logic high» شامل مقادیری است که سیستم آن‌ها را به عنوان ۱ منطقی، «High» و یا «True» در نظر می‌گیرد.
  • سطح «Valid logic low» شامل مقادیری است که سیستم آن‌ها را به عنوان ۰ منطقی، «Low» و یا «False» در نظر می‌گیرد.
  • سطح «Invalid high range» مقادیر میان این دو سطح است. این مقادیر، برای سیستم غیر‌قابل‌قبول هستند.

میزان گستردگی هر کدام از این سطوح بسته به مقدار تغذیه‌ی مدار و نوع کاربرد آن، متفاوت است.

پس از آن‌ که ورودی آنالوگ اعمال شده به سیستم، توسط مبدل‌های آنالوگ به دیجیتال به رشته‌ای از اعداد باینری تبدیل شد، ورودی مدار توسط المان‌های سیستم مورد پردازش قرار می‌گیرد. تمامی عملیات انجام شده در این پردازش‌گر‌ها، در نهایت به سه عمل پایه‌ای «AND» و «OR» و «NOT» ختم می‌شوند.

  • عمل‌گر «AND» تنها در حالتی خروجی ۱ خواهد داشت، که تمامی ورودی‌های آن برابر با ۱ باشند؛ در غیر این صورت خروجی آن صفر خواهد بود. عمل‌گر «AND» با نماد‌های $\cdot$ یا & یا $\wedge$ نمایش داده می‌شود.
  • عمل‌گر «OR» تنها در حالتی خروجی ۰ خواهد داشت که تمامی ورودی‌های آن برابر با ۰ باشند. عمل‌گر «OR» با نماد‌های $+$ یا $||$ یا $\vee$ نمایش داده می شود.
  • عمل‌گر «NOT» به ازای هر وررودی، معکوس آن را می‌دهد. این عمل‌گر را با نمادهای $\neg$ یا ‍~ نمایش می‌دهند.

جدول زیر نحوه کارکرد عمل‌گر‌های AND و OR را نشان می‌دهد:‌

X$\vee$YX$\wedge$YYX
۰۰۰۰
۱۰۱۰
۱۰۰۱
۱۱۱۱

عضویت
اطلاع از
0 دیدگاه‌ها
بازخورد در متن
دیدن همه دیدگاه‌ها

فنولوژی را در شبکه‌های اجتماعی دنبال کنید

©۲۰۲۰ – کلیه حقوق مادی و معنوی متعلق به فنولوژی است.

عضویت در خبرنامه فنولوژی

جذاب‌ترین مطالب سایت را ماهانه دریافت کنید!

خبرنامه