۰
subtitle
سلام .
ببینید قبول دارید اگه Cin=0 اون وقت ۰ با همه بیت های B عمل Xor رو انجام میده و نتیجه حاصل خود
B میشه و A هم که تغییری نمیکنه و جمع کننده AB رو حساب میکنه.ولی اگه Cin برابر ۱ باشه مقدارش همه بیت های B با ۱ عمل Xor رو انجام میدن و کلا معکوس میشن.از طرفی وقتی ما مکمل همه بیت های یه عدد رو به دست بیاریم در واقع مکمل ۱ رو محاسبه کردیم و A هم که تغییری نمیکنه و یه رقم نقلی هم داریم پس اومدیم
AB′1 رو محاسبه کردیم.
پس تا اینجا داشتیم:
Cin=0→Z=AB
Cin=1→z=AB′1
حالا ببینیم Cin چی هستش!!قبلش یه قاعده ای که تو اعداد باینری هست رو هم بگیم حتما میدونید ولی برای یاد اوری میگم
اگه سمت راست عدد باینری عدد ۰ بذاریم عدد حاصل میشه:عدد قبلی*۲
مثلا ۰۰۱ عدد ۱ هستش و ۰۰۱۰ عدد ۲/(۱*۲=۲)
اگه سمت راست عدد باینری عدد ۱ بذاریم عدد حاصل میشه: ۱+(عدد قبلی*۲ )
مثلا ۰۰۱ عدد ۱ هستش و ۰۰۱۱ عدد۳/(۱+۱*۲=۳)
خب.با توجه به شکل Cin تو شکل سمت چپ با Cout تو شکل سمت راست برابره!!
حالا یکی از ورودی های Cout همون x هستش و یکی دیگه هم 2y1 (دقت کنید سمت راست y عدد ۱ قرار گرفته پس مقدارش میشه 2y1 )
یه رقم نقلی هم که از اول داریم.پس تا اینجا:
Cin=Cout=x2y11=x2y2
خب یه جمع کننده ۴ بیتی در چه صورتی رقم نقلی میده؟؟(چون اگه رقم نقلی ذاشته باشیم اون وقت عملیات تو شکل سمت چپ تفریق میشه) به شرطی که حاصل از ۱۵ بیشتر شه(۴ بیت ماکزیمم ۱۵ هستش)
پس داریم:
x2y2>15→x2y>13
پس کلا به دست اوردیم که:
if(x2y>13)→Z=A−B
else(Z=AB)
ببینید قبول دارید اگه Cin=0 اون وقت ۰ با همه بیت های B عمل Xor رو انجام میده و نتیجه حاصل خود
B میشه و A هم که تغییری نمیکنه و جمع کننده AB رو حساب میکنه.ولی اگه Cin برابر ۱ باشه مقدارش همه بیت های B با ۱ عمل Xor رو انجام میدن و کلا معکوس میشن.از طرفی وقتی ما مکمل همه بیت های یه عدد رو به دست بیاریم در واقع مکمل ۱ رو محاسبه کردیم و A هم که تغییری نمیکنه و یه رقم نقلی هم داریم پس اومدیم
AB′1 رو محاسبه کردیم.
پس تا اینجا داشتیم:
Cin=0→Z=AB
Cin=1→z=AB′1
حالا ببینیم Cin چی هستش!!قبلش یه قاعده ای که تو اعداد باینری هست رو هم بگیم حتما میدونید ولی برای یاد اوری میگم
اگه سمت راست عدد باینری عدد ۰ بذاریم عدد حاصل میشه:عدد قبلی*۲
مثلا ۰۰۱ عدد ۱ هستش و ۰۰۱۰ عدد ۲/(۱*۲=۲)
اگه سمت راست عدد باینری عدد ۱ بذاریم عدد حاصل میشه: ۱+(عدد قبلی*۲ )
مثلا ۰۰۱ عدد ۱ هستش و ۰۰۱۱ عدد۳/(۱+۱*۲=۳)
خب.با توجه به شکل Cin تو شکل سمت چپ با Cout تو شکل سمت راست برابره!!
حالا یکی از ورودی های Cout همون x هستش و یکی دیگه هم 2y1 (دقت کنید سمت راست y عدد ۱ قرار گرفته پس مقدارش میشه 2y1 )
یه رقم نقلی هم که از اول داریم.پس تا اینجا:
Cin=Cout=x2y11=x2y2
خب یه جمع کننده ۴ بیتی در چه صورتی رقم نقلی میده؟؟(چون اگه رقم نقلی ذاشته باشیم اون وقت عملیات تو شکل سمت چپ تفریق میشه) به شرطی که حاصل از ۱۵ بیشتر شه(۴ بیت ماکزیمم ۱۵ هستش)
پس داریم:
x2y2>15→x2y>13
پس کلا به دست اوردیم که:
if(x2y>13)→Z=A−B
else(Z=AB)