باینری چیست و چگونه از آن در علوم کامپیوتر استفاده میشود؟
کامپیوتر شخصی شما، به این دلیل «دیجیتال» نامیده میشود که تمام اطلاعات داخل آن به شکل اعداد دستکاری و نمایش داده میشوند. معنای اصلی «digit» معادل «انگشت» است و از آنجایی که افراد اغلب از انگشتان خود برای شمارش استفاده میکنند، بهمرور کلمهی digit به اعداد نیز اطلاق شد. همهی اعداد موجود در یک صفحهی گسترده، همهی کاراکترهای متنی در یک فایل ورد و همهی تصاویر و صداهای ذخیرهشده در یک کامپیوتر بهصورت اعداد باینری (Binary) ذخیره میشوند. در این مقاله بررسی خواهیم کرد که باینری چیست و چگونه از آن در علوم کامپیوتر استفاده میشود؟
از آنجایی که انسانها 10 انگشت دارند، سیستم عددی که برای شمارش از آن استفاده میکنند، در مبنای 10 است. بهعنوان مثال عدد 1853 در مبنای 10 به این صورت تولید میشود:

هر یک از ارقام 0 تا 9 در یک عدد در مبنای 10، در ده به توان عددی که متناظر با ارزش مکانی آن است، ضرب میشود. توجه کنید که ارزش هر رقم 10 برابر ارزش رقم سمت راست آن است.
فهرست مطالب
Toggleاعداد باینری چیست؟
اما کامپیوترها که انگشتی برای انجام محاسبات ندارند چه کار باید بکنند؟ کامپیوترها بهجای انگشت از مدارهایی الکتریکی استفاده میکنند که فقط دو حالت برای کارکردن دارند؛ یا روشن هستند یا خاموش. بنابراین سیستم اعداد طبیعی مورداستفاده در یک کامپیوتر الکترونیکی در مبنای 2 است و به آن سیستم اعداد باینری یا دودویی گفته میشود. برخلاف شما که برای محاسبه از ده رقم استفاده میکنید (0، 1، 2، 3، 4، 5، 6، 7، 8، 9)، کامپیوترها فقط از دو رقم 0 و 1 برای انجام محاسبات و پردازش استفاده میکنند. در حافظهی یک کامپیوتر، یک ترانزیستورِ روشن (رسانای جریان) نشاندهندهی 1 و ترانزیستور خاموش، نشاندهندهی 0 است.
واژهی Binary از ریشهای لاتین به معنای «دوتایی» آمده است و در فارسی آن را «دودویی» مینامیم. پس «سیستم باینری»، «سیستم دودویی»، «سامانهی دودویی» و «مبنای ۲» همه نامهای یک مفهوماند: روشی برای نمایش اعداد و دادهها فقط با دو رقم ۰ و ۱.
بهعنوان مثال عدد باینری 11100111101 اینگونه تفسیر میشود:

همانطور که میبینید، 11100111101 در مبنای 2 معادل عدد 1853 در مبنای 10 است:
1853 \: (base 10) = 11100111101 \: (base 2)
توجه داشته باشید که در سیستم باینری، ارزش هر عدد دو برابر ارزش رقم سمت راست آن است؛ زیرا این اعداد در مبنای 2 هستند. به خاطر بیاورید که ارزشگذاری ارقام در مبنای 10 چگونه انجام میشد.
از آنجایی که استفاده از اصطلاح «رقم دودویی» سخت بود، اصطلاح کوتاهترِ بیت (bit) معرفی شد. هر بیت یک عدد باینری است و میتواند مقداری برابر با 1 یا 0 داشته باشد. رشتهای از بیتها، میتواند معرف اعداد بزرگتر باشد؛ همان طور که ما برای بیان اعداد بزرگتر از 9 از رشتههایی از اعداد در مبنای 10 استفاده میکنیم.
تبدیل عدد دهدهی به باینری
برای پیدا کردن معادل باینری یک عدد، آن را پشتسرهم بر ۲ تقسیم کنید و هر بار باقیمانده را که ۰ یا ۱ است یادداشت کنید. این کار را با خارجقسمت ادامه دهید تا به صفر برسید. در پایان باقیماندهها را از آخر به اول بخوانید. برای عدد ۱۳:
| تقسیم | خارجقسمت | باقیمانده |
|---|---|---|
| ۱۳ ÷ ۲ | ۶ | 1 |
| ۶ ÷ ۲ | ۳ | 0 |
| ۳ ÷ ۲ | ۱ | 1 |
| ۱ ÷ ۲ | ۰ | 1 |
خواندن باقیماندهها از پایین به بالا عدد 1101 را میدهد. برای اطمینان: ۸ + ۴ + ۰ + ۱ = ۱۳. روشهای دیگر و تبدیل به مبناهای دیگر را در مقالهی تبدیل مبنا؛ چطور مبناها را به یکدیگر تبدیل کنیم؟ ببینید.
جدول اعداد باینری ۰ تا ۱۵
با چهار بیت میتوان ۱۶ عدد مختلف، از ۰ تا ۱۵، را نمایش داد. ستون آخر همان عدد را به شکل چهاربیتی و با صفرهای ابتدایی نشان میدهد.
| عدد دهدهی | باینری | باینری چهاربیتی |
|---|---|---|
| ۰ | 0 | 0000 |
| ۱ | 1 | 0001 |
| ۲ | 10 | 0010 |
| ۳ | 11 | 0011 |
| ۴ | 100 | 0100 |
| ۵ | 101 | 0101 |
| ۶ | 110 | 0110 |
| ۷ | 111 | 0111 |
| ۸ | 1000 | 1000 |
| ۹ | 1001 | 1001 |
| ۱۰ | 1010 | 1010 |
| ۱۱ | 1011 | 1011 |
| ۱۲ | 1100 | 1100 |
| ۱۳ | 1101 | 1101 |
| ۱۴ | 1110 | 1110 |
| ۱۵ | 1111 | 1111 |
کاربردیترین واحد اندازهگیری حافظهی کامپیوتری معادل 8 بیت است. از این تعداد بیت از حافظه میتوان برای نمایش هر عددی از بازه صفر (00000000) تا 255 (11111111) استفاده کرد. 11111111 در مبنای 2 برابر با 255 در مبنای 10 است:
(1\times 128) + (1\times 64) + (1\times 32) + (1\times 16) + (1\times 8) + (1\times 4) + (1\times 2) + (1\times 1) = 255
همچنین به یک واحد حافظه به طول 8 بیت، بایت (byte) گفته میشود. یک بایت، واحدی است که برای محاسبهی میزان حافظهی کامپیوترها استفاده میکنیم. واحدی از حافظه با طول 4 بیت نیبل (nybble) نامیده میشود که چندان کاربردی نیست. اما چرا 8 بیت کاربردیترین طول حافظه محسوب میشود؟ استاندارد ASCII برای نمایش حروف انگلیسی، ارقام و علامتها به 7 بیت نیاز دارد. 8 بیت، یعنی یک بایت، این کدها را با یک بیت اضافه در خود جا میدهد و خودش هم توانی از 2 است؛ همینها آن را به واحد استاندارد حافظه تبدیل کرد.
کد باینری چیست؟
کد باینری روشی برای نمایش هر نوع داده فقط با دو نماد ۰ و ۱ است. هر رقم در این کد یک بیت است و هر ۸ بیت یک بایت را میسازد. عدد، حرف، تصویر، صدا و حتی دستورهای برنامهها در کامپیوتر همه به رشتههایی از صفر و یک تبدیل میشوند تا بتوان آنها را ذخیره، پردازش و منتقل کرد.
حالا سؤالی که پیش میآید این است که کاراکترهای متنی چگونه در حافظهی کامپیوتر بهصورت اعداد نمایش داده میشوند؟ برای این کار نیازمند روشی برای معادلسازی حروف به اعداد هستیم. سیستم مورداستفاده برای این کار کدگذاری اَسکی (ASCII یا American Standard Code for Information Interchange) است. حرف A بزرگ با عدد 65 در کد اسکی نمایش داده میشود (65 در سیستم باینری معادل 01000001 است). 65 کدِ اولِ اسکی (0 تا 64) برای مجموعهای از کاراکترهای کنترلی و کاراکترهای خاص استفاده میشوند، بنابراین حرف A بزرگ معادل 65امین کاراکتر اسکی است. حرف B بزرگ معادل 66 (01000010) است و به همین منوال تا پایان ادامه مییابد.
جدول کد باینری حروف انگلیسی
در جدول زیر کد ASCII و معادل باینری هشتبیتی همهی حروف انگلیسی آمده است. حروف کوچک دقیقاً ۳۲ واحد بعد از حروف بزرگ قرار دارند؛ برای همین کد باینری A و a فقط در یک بیت با هم فرق دارد.
| حرف بزرگ | دهدهی | باینری | حرف کوچک | دهدهی | باینری |
|---|---|---|---|---|---|
| A | ۶۵ | 01000001 | a | ۹۷ | 01100001 |
| B | ۶۶ | 01000010 | b | ۹۸ | 01100010 |
| C | ۶۷ | 01000011 | c | ۹۹ | 01100011 |
| D | ۶۸ | 01000100 | d | ۱۰۰ | 01100100 |
| E | ۶۹ | 01000101 | e | ۱۰۱ | 01100101 |
| F | ۷۰ | 01000110 | f | ۱۰۲ | 01100110 |
| G | ۷۱ | 01000111 | g | ۱۰۳ | 01100111 |
| H | ۷۲ | 01001000 | h | ۱۰۴ | 01101000 |
| I | ۷۳ | 01001001 | i | ۱۰۵ | 01101001 |
| J | ۷۴ | 01001010 | j | ۱۰۶ | 01101010 |
| K | ۷۵ | 01001011 | k | ۱۰۷ | 01101011 |
| L | ۷۶ | 01001100 | l | ۱۰۸ | 01101100 |
| M | ۷۷ | 01001101 | m | ۱۰۹ | 01101101 |
| N | ۷۸ | 01001110 | n | ۱۱۰ | 01101110 |
| O | ۷۹ | 01001111 | o | ۱۱۱ | 01101111 |
| P | ۸۰ | 01010000 | p | ۱۱۲ | 01110000 |
| Q | ۸۱ | 01010001 | q | ۱۱۳ | 01110001 |
| R | ۸۲ | 01010010 | r | ۱۱۴ | 01110010 |
| S | ۸۳ | 01010011 | s | ۱۱۵ | 01110011 |
| T | ۸۴ | 01010100 | t | ۱۱۶ | 01110100 |
| U | ۸۵ | 01010101 | u | ۱۱۷ | 01110101 |
| V | ۸۶ | 01010110 | v | ۱۱۸ | 01110110 |
| W | ۸۷ | 01010111 | w | ۱۱۹ | 01110111 |
| X | ۸۸ | 01011000 | x | ۱۲۰ | 01111000 |
| Y | ۸۹ | 01011001 | y | ۱۲۱ | 01111001 |
| Z | ۹۰ | 01011010 | z | ۱۲۲ | 01111010 |
برای نوشتن یک کلمه، کد حروف را پشت سر هم میگذاریم. مثلاً کلمهی Hi از دو بایت ساخته میشود: حرف H با کد 01001000 و پس از آن حرف i با کد 01101001.
کد باینری حروف فارسی
ASCII فقط برای حروف انگلیسی طراحی شده است و حروف فارسی، ژاپنی یا بیشتر زبانهای دیگر در آن جایی ندارند. برای این زبانها از یونیکد (Unicode) استفاده میشود؛ استانداردی که به هر حرف از تقریباً همهی خطهای دنیا یک شمارهی یکتا میدهد. اینکه این شماره با چند بایت ذخیره شود، به روش کدگذاری بستگی دارد. در صفحههای وب رایجترین روش UTF-8 است که حروف انگلیسی را با یک بایت و حروف فارسی را با دو بایت ذخیره میکند. جدول زیر چند حرف فارسی را نشان میدهد:
| حرف | شمارهی یونیکد | کد باینری در UTF-8 (دو بایت) |
|---|---|---|
| ا | U+0627 | 11011000 10100111 |
| ب | U+0628 | 11011000 10101000 |
| پ | U+067E | 11011001 10111110 |
| ت | U+062A | 11011000 10101010 |
| ج | U+062C | 11011000 10101100 |
| د | U+062F | 11011000 10101111 |
| ر | U+0631 | 11011000 10110001 |
| س | U+0633 | 11011000 10110011 |
| ش | U+0634 | 11011000 10110100 |
| گ | U+06AF | 11011010 10101111 |
| م | U+0645 | 11011001 10000101 |
| ن | U+0646 | 11011001 10000110 |
| و | U+0648 | 11011001 10001000 |
| ه | U+0647 | 11011001 10000111 |
| ک (فارسی) | U+06A9 | 11011010 10101001 |
| ك (عربی) | U+0643 | 11011001 10000011 |
| ی (فارسی) | U+06CC | 11011011 10001100 |
| ي (عربی) | U+064A | 11011001 10001010 |
«ی» فارسی و «ي» عربی، با اینکه در بیشتر قلمها شبیه هم دیده میشوند، در یونیکد دو حرف جدا با کدهای متفاوتاند. «ک» فارسی و «ك» عربی هم همین وضع را دارند، و این یکی از دلایل رایج ناهماهنگی در جستوجوی متن فارسی است.
تصاویر نیز در کامپیوتر بهصورت اعداد نمایش داده میشوند. اگر از فاصله نزدیک به صفحه نمایش خود نگاه کنید، میبینید که تصاویر روی صفحهنمایش از نقاط کوچک زیادی تشکیل شدهاند که بهطور خلاصه به آنها پیکسل گفته میشود. رنگ هر پیکسل در صفحهنمایش میتواند توسط سه بایت در کامپیوتر تعریف شود. اعداد موجود در بایتها به نمایشگر میگویند که چه مقدار نور قرمز، آبی و سبز باید با هم مخلوط شوند تا رنگ پیکسل ایجاد شود.
برنامههایی که در کامپیوترها اجرا میشوند نیز بهصورت اعداد ذخیره شده و توسط کدهای باینری منحصربهفرد نمایش داده میشوند. در این مورد، هر عدد نشاندهندهی دستورالعملی برای ریزپردازنده است.
زبان باینری چیست؟
«زبان باینری» اصطلاحی غیررسمی برای شکلی از دستورها و دادههاست که سختافزار کامپیوتر مستقیماً با آن کار میکند. به این شکل زبان ماشین هم میگویند. هر پردازنده مجموعهای از دستورهای پایه دارد و هر دستور با یک الگوی مشخص از صفر و یک شناخته میشود.
برنامهنویسها معمولاً مستقیم با صفر و یک برنامه نمینویسند. کد را با زبانهای برنامهنویسی مثل پایتون یا C مینویسند و ابزارهایی مثل کامپایلر و مفسر آن را در نهایت به دستورهای باینری قابلاجرا برای ماشین تبدیل میکنند.
چرا همهچیز به دو حالت ختم میشود؟ تشخیص دو حالت برای مدار الکترونیکی ساده و قابلاطمینان است. اگر مدار باید ده سطح ولتاژ مختلف را از هم تشخیص میداد، نوسان یا نویز کوچک میتوانست یک رقم را با رقم دیگر اشتباه کند. منطق صفر و یک با منطق «درست و نادرست» در ریاضیات، یعنی جبر بول، هم همخوان است؛ برای همین عملیات منطقی را میتوان مستقیم با مدارهای ساده ساخت.
کیلوبایت، مگابایت، گیگابایت و…
ظرفیت حافظه و حجم دادههای ذخیرهشده در کامپیوترها بر حسب بایت (8 بیت) محاسبه میشوند. با این حال، یک بایت واحد حافظهی کوچکی است که فقط میتواند یک کاراکتر را در خود جای دهد. بنابراین از واحدهای حافظهی بزرگتر استفاده میکنیم:
یک کیلوبایت (KB) تقریباً معادل 1000 بایت و دقیقاً معادل 1024 بایت است. اما چرا عدد عجیبی مثل 1024؟ زیرا 1024 دقیقاً معادل 10000000000 در سیستم باینری است. یک مضرب مناسب از دو برای استفاده در کامپیوتر بسیار کاربردی است. بنابراین وقتی کامپیوتر به شما میگوید که فایل شما 40 کیلوبایت فضا اشغال کرده است، در واقع آن فایل 40960 بایت فضا اشغال کرده است نه 40000 بایت. دلیل این نامگذاری این است که یک کیلوبایت را میتوان تقریباً معادل 1000 بایت در نظر گرفت.
طبق استاندارد بینالمللی IEC، نام دقیق 1024 بایت «کیبیبایت» (KiB) است و کیلوبایت رسماً 1000 بایت است؛ اما بسیاری از سیستمعاملها هنوز 1024 بایت را KB مینامند.
به همین صورت، شما میتوانید یک مگابایت (MB) را تقریباً معادل یک میلیون بایت و دقیقاً معادل 1048576 بایت (1024\times 1024) در نظر بگیرید. یک گیگابایت (GB) نیز تقریباً معادل یک میلیارد بایت و دقیقاً معادل 1073741824 بایت است.
پرسشهای متداول دربارهی باینری
دودویی یعنی چه؟
دودویی معادل فارسی «باینری» است و به سیستمی گفته میشود که فقط دو رقم دارد: ۰ و ۱. «سیستم دودویی» و «مبنای ۲» هم به همین معنا به کار میروند.
Binary به فارسی چه میشود؟
واژهی Binary در فارسی «دودویی» یا «دوتایی» ترجمه میشود. در ریاضیات و علوم کامپیوتر منظور از آن معمولاً عددنویسی در مبنای ۲ است.
تفاوت بیت و بایت چیست؟
بیت کوچکترین واحد داده است و فقط یکی از دو مقدار ۰ یا ۱ را دارد. بایت از ۸ بیت تشکیل میشود و ۲۵۶ حالت مختلف، یعنی اعداد ۰ تا ۲۵۵، را نمایش میدهد.
چطور یک عدد را به باینری تبدیل کنیم؟
عدد را پشتسرهم بر ۲ تقسیم کنید و باقیماندهها را از آخر به اول بخوانید. مثال کامل و جدول اعداد ۰ تا ۱۵ در همین مقاله آمده است.
آیا برنامهنویسها با صفر و یک برنامه مینویسند؟
معمولاً نه. برنامهها با زبانهای برنامهنویسی نوشته میشوند و کامپایلر یا مفسر آنها را به زبان ماشین، یعنی دستورهای باینری، تبدیل میکند.
اگر هنوز مطمئن نیستید که یادگیری برنامهنویسی برایتان مناسب است یا نه، یا نمیدانید از کجا شروع کنید، ما یک کوییز ساده و جذاب آماده کردهایم که میتواند به شما کمک کند مسیر درست را پیدا کنید.
همین حالا امتحان کنید: برنامه نویسی را از کجا شروع کنیم
ممکن است علاقهمند باشید: برنامه نویسی چیست؟، تاریخچه برنامهنویسی
بیشتر بخوانید: کلاینت چیست؟ با انواع کلاینت، مزایا و معایب آنها آشنا شوید







