تماس با ما

هرگونه پیشنهاد و انتقاد خود را با ما در میان بگذارید

قبل از هر چیزی تاکید میکنم که سیستم متمم-۲  فقط یه قرارداد است. یعنی این گونه نیست که یه روش جدید و متفاوت برای جمع و تفریق اعداد باشد بلکه فقط تفسیری جدید از همان روش جمع قدیم است، پس روش جمع تغییری ندارد و بنابراین نیازی به توضیح در باره خود جمع نیست.

 

سیستم متمم-۲: اگر به یاد داشته باشید همه اعداد یک متمم مبناو یک متمم مبنای کاهش یافته دارند، مثلا:

 متمم ۲ یک عدد دودویی n رقمی به این صورت به دست میاد:

10^n-متمم۲ =عدد

و متمم ۱ یک عدد دودویی n رقمی یک واحد کمتر از مکمل ۲ همان عدد یا به طور ساده تر با معکوس کردن همه رقمهای آن عدد به دست می آید.
مثال:متمم ۲ عدد 11010110 برابر 00101010 ومتمم ۱ آن برابر 00101001 است.
یه راه ساده برای بدست اوردن متمم ۲ آن است که از بیت کم ارزش عدد شروع کنیم هر موقع به اولین ۱ رسیدیم از بعد از آن یک، همه صفر ها را با یک و همه یک ها را به صفر  تبدیل کنیم مثل شکل زیر:

یک راه دیگر برای بدست آوردن متمم ۲ آن است که اول همه بیت ها را برعکس کنیم بعد عدد حاصل را با یک جمع کنیم:

10010100 ---->01101011+1 ---->01101100

حالا قرارداد میکنیم که برای اعداد منفی به جای نمایش عدد, متمم ۲ مثبت آن عدد رو در نظر میگیریم (البته قبل از هرچیز باید مشخص کنیم که اعدادمان چند بیتی است مثلا اگر ۸ بیت در نظر بگیریم عدد 11010 را هنگام متمم گیری به صورت 00011010 در نظر میگیریم پس بعد از متمم گیری برابر 11100110 میشود) در نتیجه مثل اعداد علامت دار، بیت آخر (که حالا جزئی از عدد شده ) مشخص میکند که عدد مثبت است یا منفی.

بعد از اینکه فهمیدیم که عدد منفی است فقط کافی است متمم ۲ عدد را (با در نظر گرفتن بیت علامت) بدست بیاوریم تا ارزش عدد بدست آید.

جدول زیر یک نمونه از اعداد در سیستم متمم۲ رو نشان میدهد:

عدد تفسیر متمم ۲ تفسیر علامت دار تفسیر عادی
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 8- 0- 8
1001 7- 1- 9
1010 6- 2- 10
1011 5- 3- 11
1100 4- 4- 12
1101 3- 5- 13
1110 2- 6- 14
1111 1- 7- 15

واضح است که برای اعداد مثبت در هر ۳ سیستم اعداد به یک طریق تفسیر میشوند، اما وقتی که بیت آخر منفی شود همه چیز تغییر میکند و در هر سیستم عدد، یک معنی دارد.

جمع اعداد در سیستم متمم ۲:

در سیستم علامت دار وقتی دو عدد را با هم جمع میکردیم اگر علامت آنها با هم تفاوت داشت, آنها را از هم کم میکردیم و علامت جواب, علامت عددی بود که قدرمطلق بزرگتری داشت, اما در سیستم متمم ۲ نیازی به این کار نیست.

در سیستم متمم ۲ باید بدون درنظر گرفتن اینکه بیت آخر علامت عدد هم هست، کل بیت ها را در جمع مشارکت دهیم.

توجه کنید که سیستم رو باید همیشه متمم ۲ در نظر بگیریم پس وقتی که بیت آخر جواب ۱ بشه یعنی جواب منفی است و باید با استفاده از متمم ۲ ارزش عدد رو بدست بیاوریم (یا با کمک یک جدول شبیه جدول بالا)

تفریق اعداد در سیستم متمم ۲:

برای تفریق اعداد در سیستم متمم ۲ باید تفریق را به جمع تبدیل کرد, روش کار هم ساده است:

A-B --> A+(-B)

A-(-B) --> A+B

فراموش نکنیم که در سیستم متمم ۲ برای تغییر علامت اعداد باید متمم ۲ آنها رو بدست بیاوریم

مثال:

1000+0110=1110

6 + (-8)= -2

سرریز(OVERFLOW):اگر نتیجه جمع یا تفریق در تعداد بیت های مورد استفاده ما نگنجد اصطلاحا می گوییم سرریز رخ داده مثلا در جدول بالا که تعداد بیت های مورد استفاده ۴ بیت است اگر نتیجه از ۷ بیشتر شود یا از ۸- کمتر شود سرریز رخ می دهد.

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

1000+0110=1110 (-8+6=-2)

0111+0111=1110 (7+7=14 overflow)

همانطور که پیداست نتیجه هر دو جمع ۱۱۱۰ است یعنی۲- اما در جمع دوم نتیجه عدد ۱۴ میشود که در سیستم متمم ۲ نمیتوان آن را با ۴ بیت نمایش داد یعنی نتیجه جمع دوم اشتباه است و این به دلیل سرریز رخ داده است.

برای تشخیص سرریز همیشه باید به دو رقم نقلی اخر توجه کنیم:

مثلا در این شکل میبینیم که دو رقم نقلی اخر به ترتیب ۱ و ۰ است.

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

برای وضوح بیشتر مطلب به این مثال توجه کنید:

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

  1. در ستون بدون علامت ملاحظه می کنید که اگر فرض ما برا ین باشد که از سیستم بدون علامت استفاده میکنیم این جمع معنای 155+98=253 رو میدهد و رقم اخر جواب یعنی رقم نقلی (که با رنگ قرمز مشخص شده), صفر است که به معنی این است که جواب دارای سرریز نیست.
  2. اگر دو عدد رو علامت دار در نظر بگیریم جمع اشتباه میشه چون پیداست که 125-=98+27- اشتباه است, دلیل این اشتباه این است که بیت اخر که بیت علامت محسوب میشود در جمع شرکت کرده و چون علامت اعداد مختلف است دو عدد را بایستی از هم کم کرد.
  3. اگر اعداد جمع شده رو در سیستم متمم ۲ در نظر بگیریم در این صورت جمع معنی 3-=98+101- رو میده و پیداست که درسته, البته با توجه به اینکه دو رقم نقلی آخر با هم برابر هستند (دقت کنید که رقم های نقلی بالای جمع با رنگ قرمز مشخص شده و دو رقم نقلی آخر هردو صفر است) پس میتوان گفت نتیجه جمع معتبر است.

 


مطالب بیشتر:

http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary

https://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/BinaryMath.html