28 دى 1393, 05:29 ب.ظ
29 دى 1393, 08:02 ب.ظ
سلام .
ببینید قبول دارید اگه [tex]C_{in}=0[/tex] اون وقت 0 با همه بیت های [tex]B[/tex] عمل [tex]Xor[/tex] رو انجام میده و نتیجه حاصل خود
[tex]B[/tex] میشه و [tex]A[/tex] هم که تغییری نمیکنه و جمع کننده [tex]A B[/tex] رو حساب میکنه.ولی اگه [tex]C_{in}[/tex] برابر 1 باشه مقدارش همه بیت های [tex]B[/tex] با 1 عمل [tex]Xor[/tex] رو انجام میدن و کلا معکوس میشن.از طرفی وقتی ما مکمل همه بیت های یه عدد رو به دست بیاریم در واقع مکمل 1 رو محاسبه کردیم و [tex]A[/tex] هم که تغییری نمیکنه و یه رقم نقلی هم داریم پس اومدیم
[tex]A B' 1[/tex] رو محاسبه کردیم.
پس تا اینجا داشتیم:
[tex]C_{in}=0\rightarrow Z=A B[/tex]
[tex]C_{in}=1\rightarrow z=A B' 1[/tex]
حالا ببینیم [tex]C_{in}[/tex] چی هستش!!قبلش یه قاعده ای که تو اعداد باینری هست رو هم بگیم حتما میدونید ولی برای یاد اوری میگم
اگه سمت راست عدد باینری عدد 0 بذاریم عدد حاصل میشه:عدد قبلی*2
مثلا 001 عدد 1 هستش و 0010 عدد 2.(1*2=2)
اگه سمت راست عدد باینری عدد 1 بذاریم عدد حاصل میشه: 1+(عدد قبلی*2 )
مثلا 001 عدد 1 هستش و 0011 عدد3.(1+1*2=3)
خب.با توجه به شکل [tex]C_{in}[/tex] تو شکل سمت چپ با [tex]C_{out}[/tex] تو شکل سمت راست برابره!!
حالا یکی از ورودی های [tex]C_{out}[/tex] همون [tex]x[/tex] هستش و یکی دیگه هم [tex]2y 1[/tex] (دقت کنید سمت راست [tex]y[/tex] عدد 1 قرار گرفته پس مقدارش میشه [tex]2y 1[/tex] )
یه رقم نقلی هم که از اول داریم.پس تا اینجا:
[tex]C_{in}=C_{out}=x 2y 1 1=x 2y 2[/tex]
خب یه جمع کننده 4 بیتی در چه صورتی رقم نقلی میده؟؟(چون اگه رقم نقلی ذاشته باشیم اون وقت عملیات تو شکل سمت چپ تفریق میشه) به شرطی که حاصل از 15 بیشتر شه(4 بیت ماکزیمم 15 هستش)
پس داریم:
[tex]x 2y 2>15\rightarrow x 2y>13[/tex]
پس کلا به دست اوردیم که:
[tex]if(x 2y>13)\rightarrow Z=A-B[/tex]
[tex]else(Z=A B)[/tex]
ببینید قبول دارید اگه [tex]C_{in}=0[/tex] اون وقت 0 با همه بیت های [tex]B[/tex] عمل [tex]Xor[/tex] رو انجام میده و نتیجه حاصل خود
[tex]B[/tex] میشه و [tex]A[/tex] هم که تغییری نمیکنه و جمع کننده [tex]A B[/tex] رو حساب میکنه.ولی اگه [tex]C_{in}[/tex] برابر 1 باشه مقدارش همه بیت های [tex]B[/tex] با 1 عمل [tex]Xor[/tex] رو انجام میدن و کلا معکوس میشن.از طرفی وقتی ما مکمل همه بیت های یه عدد رو به دست بیاریم در واقع مکمل 1 رو محاسبه کردیم و [tex]A[/tex] هم که تغییری نمیکنه و یه رقم نقلی هم داریم پس اومدیم
[tex]A B' 1[/tex] رو محاسبه کردیم.
پس تا اینجا داشتیم:
[tex]C_{in}=0\rightarrow Z=A B[/tex]
[tex]C_{in}=1\rightarrow z=A B' 1[/tex]
حالا ببینیم [tex]C_{in}[/tex] چی هستش!!قبلش یه قاعده ای که تو اعداد باینری هست رو هم بگیم حتما میدونید ولی برای یاد اوری میگم
اگه سمت راست عدد باینری عدد 0 بذاریم عدد حاصل میشه:عدد قبلی*2
مثلا 001 عدد 1 هستش و 0010 عدد 2.(1*2=2)
اگه سمت راست عدد باینری عدد 1 بذاریم عدد حاصل میشه: 1+(عدد قبلی*2 )
مثلا 001 عدد 1 هستش و 0011 عدد3.(1+1*2=3)
خب.با توجه به شکل [tex]C_{in}[/tex] تو شکل سمت چپ با [tex]C_{out}[/tex] تو شکل سمت راست برابره!!
حالا یکی از ورودی های [tex]C_{out}[/tex] همون [tex]x[/tex] هستش و یکی دیگه هم [tex]2y 1[/tex] (دقت کنید سمت راست [tex]y[/tex] عدد 1 قرار گرفته پس مقدارش میشه [tex]2y 1[/tex] )
یه رقم نقلی هم که از اول داریم.پس تا اینجا:
[tex]C_{in}=C_{out}=x 2y 1 1=x 2y 2[/tex]
خب یه جمع کننده 4 بیتی در چه صورتی رقم نقلی میده؟؟(چون اگه رقم نقلی ذاشته باشیم اون وقت عملیات تو شکل سمت چپ تفریق میشه) به شرطی که حاصل از 15 بیشتر شه(4 بیت ماکزیمم 15 هستش)
پس داریم:
[tex]x 2y 2>15\rightarrow x 2y>13[/tex]
پس کلا به دست اوردیم که:
[tex]if(x 2y>13)\rightarrow Z=A-B[/tex]
[tex]else(Z=A B)[/tex]
29 دى 1393, 09:58 ب.ظ
سلام
وای چقد خوب توضیح دادین ممنوووووووون خیلی لطف کردین
وای چقد خوب توضیح دادین ممنوووووووون خیلی لطف کردین
29 دى 1393, 11:13 ب.ظ
سلام.کاری نکردم که