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

جمع و تفریق اعداد باینری


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

جمع و تفریق اعداد باینری در مدارهای جمع کننده کامپیوتر انجام می شود. برای اعداد علامت دار، در ساده ترین حالت آخرین بیت سمت چپ به عنوان بیت علامت (Sign Bit) در نظر گرفته می شود و با نماد S نمایش می دهند. به طوری که اگر S=0 باشد عدد مثبت است و اگر S=1 باشد، عدد منفی‌ست.

در مورد جمع و تفریق اعداد باینری، بیت علامت نیز مانند سایر بیت ها در نظر گرفته می شود.

جمع باینری

جمع اعداد باینری بسیار ساده است. برای جمع دو عدد باینری از نماد S به عنوان Sum و از نماد C به عنوان Carry یا بیت نقلی استفاده می کنیم. همان طور که در جدول زیر ملاحظه می کنید، اگر دو بیت صفر باشند، مجموع و بیت نقلی برابر صفر است. اگر یکی از بیت ها یک باشد، مجموع یک می شود و دو صورتی که هر دو بیت یک باشد، مجموع و بین نقلی برابر یک خواهد شد.

جمع و تفریق اعداد باینری

برای جمع هر بیت، سخت افزار از مدار جمع کننده کامل FA یا Full Adder بهره می برد. در صورتی که اعداد ما چهار بیتی باشند، چهار مدار جمع کننده کامل برای جمع دو عدد نیاز است.

جمع و تفریق اعداد باینری

تفریق اعداد باینری و سیستم مکمل 2

در کامپیوترها تفریق کننده مجزا برای تفریق دو عدد ساخته نمی شود و معمولا از همان مدار جمع کننده برای تفریق نیز استفاده می شود. در این صورت برای تفریق دو عدد مکمل 2 ( 2' Complement) مفروق را محاسبه می کنیم و با مفروق منه جمع می نماییم.

مکمل 2 یک عدد یعنی مکمل 1 آن عدد بعلاوه یک

برای پیدا کردن مکمل 1 (1' Complement) هر عدد، بیت های آن عدد را معکوس می کنیم، یعنی صفر را به یک و یک را به صفر تبدیل می کنیم. به عنوان مثال مکمل 1 عدد 00001001 برابر با 11110110 خواهد بود.

حال برای محاسبه مکمل 2 عدد کافیست به مکمل 1 عدد، یک واحد اضافه نماییم. که برای مثال بالا خواهیم داشت :

11110110 + 1=  11110111

حال اگر بخواهیم عدد 00001001 را از عدد 00001101 کم کنیم، کافیست مکمل 2 عدد اول، یعنی 11110111، را با عدد دوم جمع کنیم که خواهیم داشت:

00001101 + 11110111 = 00000100

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

سرریز / پاریز

پهنای بیتی در هر کامپیوتر حداقل و حداکثر اعداد صحیحی را که آن کامپیوتر می تواند نمایش دهد، محدود می کند. در اعدا صحیح بدون علامت، هر عدد n بیتی می تواند مقادیری بین 0 تا (2^n)-1 را نمایش دهد. اما عملیات محاسبلتی بر روی اعدادی که می توانند با تعداد معینی از بیت ها نمایش داده شوند، نتایجی را تولید می کنند که در همان قالب نمی توانند به نمایش درآیند. برای مثال جمع دو عدد صحیح n بیتی می تواند نتیجه ای با طول 2((2^n)-1) را تولید کند که با n بیت قابل نمایش نیست و هم چنین ممکن است که نتایحج منفی از تفریق دو عدد صحیح مثبت تولید شود که توسط یک عدد n بیتی بدون علامت قابل نمایش نباشد.

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

سرریز زمانی روی می دهد که نتیجه یک عمل خیلی بزرگتر از آن باشد که بتوان در قالب داده های ورودی نمایش داد و پاریز زمانی رخ می دهد که نتیجه خیلی کوپکتر از حدی است که قابل نمایش در آن قالب باشد. سیستم های مختلف، سرریز و پاریزها را با روش های متفاوتی مدیریت می کنند. تعدادی از آنها در هنگام مواجهه با این مسئله پیغام خطا می دهند و مابقی سیستم ها نتیجه را با نزدیکترین مقداری که می تواند در آن قالب نمایش داده شود، جایگزین می سازد. در اعداد با ممیز شنائر، استاندارد IEEE مجموعه خاصی از نمایش را مشخص می کند که بیانگر وقوع سرریز یا پاریز است. این روش های نمایش NaN یا Not a Number نامیده می شوند. برای اطلاعات بیشتر می توانید به مقاله "اعدادی که عدد نیستند"  رجوع کنید.

فاطمه مجدآبادی

بخش دانش و زندگی تبیان