دیجیتال دیزاین به سبک تِرِد دیجیتال دیزاین به سبک تِرِد



شما این تِرِد رو مطالعه کردید آفرین.🍻
اوپس: تصویر 502
ایلیا 1405/5/30

Overflow؛ وقتی جواب جا نمی‌شود! آموزش و یادگیری Overflow؛ وقتی جواب جا نمی‌شود! به صورت رایگان

درک Overflow و تفاوت آن با Carry

سلام!

ما تو تِرِد قبل دیدیم که کامپیوتر جمع و تفریق رو با بیت‌ ها انجام میده.

اما یه محدودیت مهم داره:

کامپیوتر همیشه تعداد مشخصی بیت برای نگه‌ داشتن عدد داره.

مثلاً اگه بگیم با ۴ بیت کار میکنیم، فقط چهار خانه برای نوشتن جواب داریم.
نه بیشتر.

اگر عدد ها رو بدون علامت در نظر بگیریم، با ۴ بیت میتوانیم از صفر تا ۱۵ را بنویسیم:

0000 = 0

تا:

1111 = 15
مثال

مثال: ۷ + ۱۲

حالا فرض کن بخوایم ۱۲ و ۷ رو جمع کنیم:

12 + 7 = 19

اما ۱۹ درون ۴ بیت جا نمیشه.

جمع باینری رو انجام میدیم:

1100
+ 0111
──────
10011

جواب واقعی 10011₂ هست؛ یعنی ۱۹.

ولی ما فقط ۴ بیت جا داریم.

پس بیت اضافه‌ سمت چپ بیرون میزنه و اگر فقط همون چهار بیت رو نگه داریم، میمونه:

0011

که یعنی ۳.

کامپیوتر جواب رو اشتباه حساب نکرده؛ جواب درست رو تولید کرده، اما فضای کافی برای نگه‌ داشتنش نداشته.

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


آیا Overflow همون Carry است؟

حالا ممکنه بگی: «خب، همون Carry که در جمع دیدیم نیست؟»

نه همیشه.

در عدد های بدون علامت، Carry بیرون‌زده از سمت چپ معمولاً به ما میگه که جواب در تعداد بیت‌ های موجود جا نشده است.
پس در جمع بدون علامت، Carry میتونه نشانه‌ Overflow باشد.

اما در عددهای علامت‌دار که با مکمل دو نشون داده میشه، داستان کمی فرق دارد.


Overflow در عددهای علامت‌دار

مثلاً باز هم با ۴ بیت کار میکنیم.

در مکمل دو، بازه‌ عدد های قابل نمایش اینه:

از 8- تا 7

حالا 5 و 5 رو جمع می‌کنیم:

5 = 0101

پس:

0101
+ 0101
──────
1010

از نظر واقعی، جواب باید ۱۰ باشد.

اما در مکمل دوِ ۴ بیتی، عدد 1010 برابر است با ۶-، نه ۱۰+ چون در بازه ای که مشخص کردیم(همون بازه 8- تا 7) ۱۰+ وجود نداره اصلا.

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

این دقیقاً نشانه‌ی Overflow در عددهای علامت‌دار است.


قاعده‌ی تشخیص Overflow

قاعده‌اش رو اینطور یاد بگیر:

  • اگر دو عدد مثبت رو جمع کنیم و جواب منفی شود ← Overflow رخ داده.
  • اگر دو عدد منفی رو جمع کنیم و جواب مثبت شود ← Overflow رخ داده.
  • اگر یک عدد مثبت و یک عدد منفی رو جمع کنیم ← هرگز Overflow رخ نمیده؛ چون جواب همیشه بین آن دو قرار میگیرد و از بازه بیرون نمیزنه.

تفاوت Carry و Overflow

پس Carry و Overflow یکی نیستن.

مفهومتوضیح
Carryبیت نقلی‌ ای(درستش نَقلی هست ولی شما نُقلی بخون تو ذهنت بمونه اگر دوست داشتی مثل خودت که نُقل مجلس ما هستی) که از سمت چپ جمع بیرون می‌زند
Overflowجواب نهایی در بازه‌ قابل نمایش جا نمیشه

گاهی هر دو با هم رخ میدهند، گاهی فقط یکی از آن‌ ها رخ میده، و گاهی هیچ‌کدام.

پس Overflow یعنی جواب وجود دارد، ولی ظرفِ بیت‌ های ما برای نگه‌ داشتنش کوچکه.

در تِرِد بعدی می‌ریم سراغ BCD؛ روشی که کامپیوتر با آن رقم‌ های ده‌ دهی رو به شکل باینری نگه میداره.

با این داداشت همراه باش!!!

شماره تِرِد : شماره 8 از 9

نظرات