ورود

View Full Version : سوال از مدار منطقی مقسمی



masoudtrick
یک شنبه 01 تیر 1393, 14:28 عصر
سلام من لیسانس فیزیک هستم پس لطفا این و مدنظر داشته باشید برای راهنمایی هاتون. صفحه 19 و 20 و 21 مدارمنطقی کاردانی مقسمی راجع به نمایش اعداد منفی در کامپیوتر و متمم 2 گفته من نمیفهمم که چیه اصلا. اینقدر که حتی نمیتونم سوالم رو بپرسم خواهشا یه توضیح مختصر و مفیدی برام بذارید که چی میگه و منظورش چیه. میدونم توقع زیادیه اما راه دیگه ای به ذهنم نرسید ممنون میشم اگه کسی کمک کنه.

vahid-p
یک شنبه 01 تیر 1393, 19:18 عصر
کتاب رو نمیشناسم.
ولی در مورد اعداد متمم 2 یا مکمل 2 . چند روش داریم برای نشون دادن اعداد منفی. اینکه یک بیت براش در نظر بگیریم و اگر بیت sign یا علامت به اصطلاح، یک بود، عدد منفی و اگر صفر بود مثبت. به این حالت میگن Signed Number . مثلا اگر عددمون رو 5 بیتی در نظر بگیریم، بیت پر ارزش تر رو منفی و مثبت و 4 بیت دیگه رو مقدار عدد در نظر بگیریم. اونوقت ما 4 بیت مقدار که 16 حالت میشه، 1 بیت هم برای منفی و مثبت که خودش باز دو حالت میشه و از ضرب 2*16 میتونیم 32 عدد مثبت و منفی رو نشون بدیم. البته یکی از معایب این روش این است که ما دو عدد صفر داریم. صفر منفی و صفر مثبت. چون 10000 و 00000 هر دو صفر هستند ولی با دو علامت مختلف. عدد 5 در این حالت 00101 است و عدد 5- 10101 است. همانطور که میبینید فقط در بیت 5 ام تفاوت وجود دارد و بقیه که مقدار را مشخص میکند یکسان است.
اما به دلیل دشواری هایی که در جمع و تفریق به وجود می آید، زیاد مورد استقبال قرار نمیگیرد. گرچه برای عمل ضرب ساده تر و ملموس تر است.
برای همین بیشتر از مکمل 2 استفاده میکنند : (two's complement)
در این روش برای 5 بیت که 32 حالت داریم، بخش پر ارزشتر را برای اعداد منفی در نظر میگیرند. یعنی از 00000 تا 01111 برای اعداد صفر تا مثبت 15 و از 10000 تا 11111 برای اعداد منفی 16- تا 1-. پس باز هم میبیند با پر ارزش ترین بیت در اینجا بیت 5 ام میتونیم منفی یا مثبت بودن عدد رو تشخیص بدیم. اما اینگونه نیست که ما به راحتی بیت 5 ام را علامت و بقیه را مقدار در نظر بگیریم. بلکه گردش اعداد به صورت دیگری است.میبینید که 10000 همان منفی 16 است. در صورتی که در اعداد علامتدار Signed Number یعنی منفی صفر. اما برای مبنای 2 مثلا اینگونه است که مثلا برای به دست آوردن عدد منفی 5 شما عدد 100000 ( 6 بیت ) رو منهای 5 میکنید و بعلاوه یک. خب این یک تعریف است و البته با دلیل این کار رو کردن که اول شما استفادش رو باید یادبگیرید تا بعدا مفهومش رو هم بفهمید. برای به دست آوردن عدد مکمل 2 راه ساده تر که نخوای منهای و... بکنی اینه که از سمت راست وقتی به اولین یک رسیدی بعد از اون رو Not کنی. مثلا 10110 میشه 01010 . پس میفهمیم عدد 10110 عدد 10- است. برای دونستن یک عدد منفی ( پر ارزشترین بیت اگر یک بود ) مکمل 2 اش رو میگیریم که میشه یک عدد مثبت که اون عدد مثبت مقدارش مثل مقدار هر عدد دودویی دیگه ای محاسبه میشه.
اما اینجا یک استثنا داریم و اون هم عدد 10000 است. شما مکمل 2 رو حساب کنید باز میشه 10000 چون ما در 5 بیت میتوانیم -16 را نشان دهیم ولی مثبت 16 نداریم. دلیل آن هم این است که یک عدد از فضای مثبت ها رو به صفر دادیم، در حالی که از فضای منفی ها برای صفر هزینه نکردیم.

علاوه بر اون اگر شما یک عدد رو اول Not کنید و بعد با 1 جمع کنید هم مکمل 2 اش بدست میاد. برای همین تفریق دو عدد رو به راحتی میتونیم با جمع انجام بدیم. مثلا

A-B=A+(-B)=A+B'+1
منظورم از B' همون Not B است. این یکی از دلایلی است که از مکمل 2 استفاده میکنند و دیگه نیازی نیست تفاوتی بین جمع و تفریق دو عدد چه مثبت و چه منفی قائل شد. یک مدار برای کل این کار کافیه.

موفق باشید