موضوع مقاله: کدهای دودویی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کدهای دودویی | مقدمه: یک کد باینری نشان دهنده متن، دستورالعمل‌های پردازندهٔ کامپیوتر یا داده‌های دیگری است که از سیستم دو نماده استفاده می‌کنند، اما غالباً سیستم باینری از اعداد ۰ و ۱ استفاده می‌کند. | ## بخش 1: کدهای دودویی | این کد باینری یک الگوی رقم‌های دودویی (بیت) را به هر حرف، دستورالعمل و غیره اختصاص می‌دهد. برای مثال یک رشتهٔ دودویی هشت بیتی می‌تواند هر یک از ۲۵۶مقدار ممکن را نشان دهد و در نتیجه می‌تواند نشان دهندهٔ انواع آیتم‌های مختلف باشد... کدهای باینری در محاسبات و ارتباطات از راه دور برای انواع روش‌های رمزگذاری داده‌ها مثل تبدیل رشته‌های کاراکتر به رشته‌های بیتی مورد استفاده قرار گیرد. در یک عرض ثابت کد باینری، هر حرف، رقم، یا دیگر کاراکتر به وسیلهٔ یک رشته بیت هم عرض نشان داده می‌شوند که آن رشتهٔ بیتی به عنوان یک عدد دودویی تفسیر می‌شود که معمولاً در جدول‌های کد به صورت در مبنای هشت، ده یا شانزده نشان داده می‌شوند. تعداد زیادی از مجموعه کاراکترها و تعداد زیادی رمزگذاری کاراکتر برای آن‌ها موجود است. یک رشتهٔ بیتی به عنوان یک عدد دودویی تفسیر می‌شود ومی توان آن را به یک عدد دهدهی ترجمه کرد. برای مثال حرف a اگر به وسیلهٔ رشتهٔ بیتی نشان داده شود به صورت ۰۱۱۰۰۰۰۱ (کد استاندارد اسکی) خواهد بود و همچنین می‌تواند در عنوان عدد دهدهی ۹۷ نشان داده شود. سیستم لایبنیتس مانند سیستم عددی دودویی مدرن از ۰ و ۱ استفاده می‌کند.اعداد دودویی از نظر علم دین در مرکز توجه لایبنیتس بود. لایبنیتس در تلاش بود که سیستمی پیدا کند که توضیحات شفاهی منطق را به ریاضی محض تبدیل کند. پس از اینکه ایده‌های او نادیده گرفته شد او به سراغ متن کلاسیک چینی به نام I Ching یا کتاب تغییرات رفت که با استفاده از یک نوع کد دودویی نوشته شده است. این کتاب ایدهٔ او را تأیید می‌کرد که زندگی می‌تواند ساده‌سازی شود و به یک سری گزارهٔ ساده کاهش یابد. کد باینری در سیستم های کامپیوتری و دیجیتالی در الکترونیک و در سیستم‌های کامپیوتری و دیجیتالی، به منظور انتقال اطلاعات از اعداد دودویی یا باینری (binary) که در قالب 0 و 1 هستند استفاده می‌شود. برخلاف مدارهای غیرخطی و آنالوگی مانند تقویت‌کننده‌های AC که وظیفه‌ی پردازش سیگنال‌هایی با فرکانس و دامنه‌ی متغیر بر عهده دارند، مدارهای دیجیتال سیگنال‌هایی را پردازش می‌کنند که تنها دو سطح ولتاژ یا دو حالت دارند. به طور کلی «1» منطقی نشان‌دهنده‌ی ولتاژ بالاتر مانند 5 ولت است و معمولاً به عنوان مقدار HIGH (بالا) شناخته می‌شود. «0» منطقی نیز نمایانگر ولتاژ پایین‌تر مانند 0 ولت یا زمین است و معمولاً به عنوان مقدار LOW (پایین) نام‌گذاری می‌شود. بیت‌های باینری صفر و یک استفاده از اعداد باینری در سیستم‌های الکترونیک دیجیتال بسیار مناسب است، زیرا در این اعداد تنها دو مقدار بولی مجاز برای نمایش 0 یا 1 منطقی وجود دارد. «دستگاه اعداد باینری» یک دستگاه شماره گذاری پایه‌‌ی 2 است که از همان قوانین مرسوم ریاضی و دستگاه رایج اعداد دهدهی یا اعداد پایه‌ی 10 تبعیت می‌کند. در این دستگاه به جای توان‌های 10 (10n) مثل 1، 10، 100، 1000 و … از توان‌های 2 (2n) مثل 1، 2، 4، 8، 16، 32 و … استفاده می‌شود؛ لذا ارزش هر بیت دو برابر بیت قبل از خود خواهد بود. در مدارهای دیجیتالی و سیستم‌های کامپیوتری محدودیتی برای انتخاب ولتاژها وجود ندارد، اما معمولاً ولتاژهای کمتر از 10 ولت به کار می‌روند. در دیجیتال این ولتاژها «سطوح منطقی» نامیده می‌شوند و یک سطح ولتاژ بیانگر وضعیت HIGH و سطح ولتاژ پایین‌تر نشان‌دهنده‌ی وضعیت LOW است. سیگنال‌های دیجیتال از سطوح ولتاژ گسسته یا متمایزی تشکیل شده‌اند که دائماً بین دو وضعیت HIGH و LOW تغییر می‌کنند. | ## بخش 2: کدهای دودویی | اما وجه تمایز سیگنال‌ها یا ولتاژهای «دیجیتال» از سایر سینگال‌ها چیست و چگونه می‌توان سطوح ولتاژ HIGH و LOW را نشان داد؟ برای درک این موضوع ابتدا باید بدانیم که مدارها و سیستم‌های الکترونیکی به دو دسته‌ی اصلی تقسیم می‌شوند: مدارهای آنالوگ: مدارهای آنالوگ یا خطی، وظیفه‌‌ی تقویت یا پاسخ دادن به سطوح ولتاژ متغییری را بر عهده دارند که حتی ممکن است در یک دوره‌ی تناوب از یک مقدار مثبت به یک مقدار منفی تغییر کنند. مدارهای دیجیتال: مدارهای دیجیتال برای کارکرد صحیح به دو سطح ولتاژ متمایز نیاز دارند. مقدار یک کمیت آنالوگ با گذشت زمان پیوسته تغییر می‌کند، در حالی که یک کمیت دیجیتال تنها مقادیر گسسته یا پله‌ای – HIGH و LOW – اختیار می‌کند. در هر صورت، سیگنال دیجیتال ورودی یا خروجی، مقدار باینری معادل سیگنال آنالوگ خواهد بود. اعداد هگزا دسیمال یکی از بزرگترین ضعف‌های اعداد باینری، طولانی بودن بیش از حد رشته‌‌ی باینری مربوط به اعداد دهدهی بزرگ است. در سیستم‌های دیجیتالی عظیم مثل کامپیوترها، استفاده از اعداد باینری 8، 16 و حتی 32 رقمی بسیار رایج است؛ اما خواندن و نوشتن تعداد زیادی عدد باینری 16 یا 32 بیتی، بدون پیش آمدن هیچ خطایی عملاً غیرممکن خواهد بود. یکی از روش‌های مرسوم برای غلبه بر این مشکل، دسته‌بندی اعداد باینری در گروه‌ها یا مجموعه‌های چهار بیتی و در نهایت استفاده از اعداد هگزادسیمال (Hexadecimal) است. سیستم شماره‌گذاری هگزادسیمال و یا به اختصار «هگز» (Hex)، همان دستگاه اعداد مبنای 16 است. این سیستم شماره‌گذاری به علت فرمت تقریباً فشرده‌ای که دارد، گزینه‌ی بسیار مناسبی برای نمایش رشته‌های باینری طولانی به شمار می‌رود. از آن‌جایی که اعداد هگزادسیمال اعدادی در مبنای 16 هستند، برای نمایش این اعداد می‌توان از 16 رقم متفاوت و از اعداد 0 تا 15 استفاده کرد. این موضوع در حالت عادی مشکلی ایجاد نمی‌کند، اما به طور مثال اگر عدد 10 را در مبنای 16 بنویسیم، نمی‌توان تشخیص داد که این عدد 10 دهدهی است یا 2 باینری. برای حل این مشکل مقادیر ده، یازده، دوازده، سیزده، چهارده و پانزده را به ترتیب با حروف بزرگ انگلیسی E، D، C، B، A و F نمایش می‌دهیم. اما با دسته‌بندی این اعداد باینری بزرگ به گروه‌های کوچکتر و با تعداد ارقام مساوی، فهم و نوشتن آنها راحت‌تر خواهد بود. برای تبدیل اعداد باینری به اعداد هگزادسیمال، ابتدا باید عدد باینری را در گروه‌های چهار رقمی دسته‌بندی کنیم. این گروه‌ها می‌توانند مقداری بین 010 (00002) تا 1510 (11112) داشته باشند که همان معادل هگز 0 تا F است. همانطور که می‌دانیم یک کد باینری n بیتی، مجموعه‌ای از n بیت است که با آن می‌توان تا 2n ترکیب متمایز ایجاد کرد. مزیت استفاده از سیستم BCD در این است که همانند سیستم هگزادسیمال، هر رقم دهدهی نماینده‌ی 4 بیت است؛ لذا برای نمایش هر رقم دهدهی (0 تا 9) از یک کد باینری چهار بیتی استفاده می‌شود. البته کدهای BCD دقیقاً مانند اعداد هگزادسیمال نیستند و تفاوت‌هایی نیز وجود دارد. به عنوان مثال، حداکثر مقداری که یک عدد هگزادسیمال چهار بیتی می‌تواند اختیار کند F16 یا 11112 است که معادل 15 دهدهی است. این مسئله بدان معنی است که با وجود اینکه با چهار رقم باینری می‌توان تا 16 عدد را نشان داد (24)، اما در سیستم شمارش BCD شش ترکیب آخر کاربردی ندارند؛ یعنی استفاده از اعداد 1010 (10 دهدهی)، 1011 (11 دهدهی)، 1100 (12 دهدهی)، 1101 (13 دهدهی)، 1110 (14 دهدهی) و 1111 (15 دهدهی) ممنوع است. | ## بخش 3: کدهای دودویی | بزرگترین مزیت استفاده از کد BCD، راحت‌تر کردن تبدیل اعداد باینری و دهدهی به یکدیگر است. اگرچه کد BCD بدی‌هایی نیز دارد که مهم‌ترین آن، عدم استفاده از اعداد 1010 (10 دهدهی) تا 1111 (15 دهدهی) است. با این وجود کد BCD کاربردهای بسیار مهمی مخصوصاً در نمایش‌دهنده‌های دیجیتال دارد. برای ساخت یک کد BCD، تنها کافی است معادل باینری هر رقم دهدهی را در قالب چهار بیتی بنویسیم. لذا یک گروه چهار بیتی 10 حالت مختلف خواهد داشت که از 0000 برای صفر تا 1001 برای نه را شامل می‌شود. به عنوان مثال، عدد دهدهی 35710 در کد BCD به شکل زیر نمایش داده می‌شود: 35710 = 0011 0101 0111 (BCD) همانگونه که می‌بینیم، در سیستم BCD از «کدگذاری وزنی» استفاده می‌شود، زیرا جایگاه هر گروه چهار بیتی، وزنی دارد که در مقدار نهایی تأثیرگذار است. به عبارت دیگر، BCD یک کد وزن‌دار است و وزن‌های استفاده شده در کد BCD عبارتند از 8، 4، 2 و 1. لذا از آنجایی که کد BCD نشان‌دهنده‌ی معادل باینری رقم دهدهی مربوط است، عموماً به آن «کد 8421» نیز گفته می‌شود. تبدیل دهدهی به BCD قوانین تبدیل اعداد دهدهی به BCD، شباهت بسیار زیادی به قوانین تبدیل اعداد هگزادسیمال به باینری دارد. ابتدا، ارقام وزن‌دار عدد دهدهی را جدا کرده و سپس معادل باینری هر رقم را در قالب چهار بیت می‌نویسیم. تنها لازم است عدد باینری را به گروه‌های چهار بیتی تقسیم کرده و با شروع از کم ارزش‌ترین رقم، معادل دهدهی هر یک از گروه‌های چهار بیتی را بنویسیم. در صورت نیاز برای تشکیل یک گروه چهار بیتی کامل، در سمت چپ عدد صفرهای اضافی قرار می‌دهیم. اعداد باینری علامت دار در مدارهای دیجیتال هیچ تدارکی برای قرار دادن یک علامت به‌علاوه یا منها در کنار عدد دیده نشده است. چون سیستم‌های دیجیتال با اعداد باینری کار می‌کنند که به‌صورت صفر و یک نمایش داده می‌شوند. زمانی که این «1» و «0» ها در مدارهای میکروالکترونیک کنار هم قرار می‌گیرند، بیت (bit) نامیده می‌شوند. این اعداد در چند واحد قرار می‌گیرند که به نام‌هایی مانند بایت (8 بیت) یا کلمه (word = دو بایت) نامیده شده‌اند. یک عدد باینری هشت بیتی (یک بایت) می‌تواند مقداری بین 0 (000000002) تا 255 (111111112) داشته باشد یعنی 28=256 ترکیب مختلف از بیت‌ها، یک بایت ۸ بیتی منفرد را تشکیل می‌دهند. بنابراین یک عدد باینری بی علامت مانند 010011012 برابر با مقدار ده‌دهی 64 + 8 + 4 + 1 = 7710 خواهد بود. اما سیستم‌های دیجیتال و رایانه‌ها باید توانایی استفاده و تغییر اعداد منفی را نیز مانند اعداد مثبت داشته باشند. در حالی که قبلاً محدوده اعداد باینری ۴ بیتی بدون علامت از ۰ تا ۱۵ یا در نمایش مبنای ۱۶ (هگزادسیمال) از 0 تا F بودند، اما در این‌ روش، نمایش به محدوده اعداد 7- تا 7+ کاهش یافته است. | ## جمع‌بندی | بنابراین عدد باینری بدون علامت، بیت منفرد علامت را ندارد و می‌تواند محدوده باینری بزرگ‌تری داشته باشد، چون معنی‌دارترین بیت (MSB، یعنی بیت سمت چپ) تنها نشان دهنده یک رقم است و به عنوان بیت علامت استفاده نمی‌شود.