PDA

View Full Version : two's complement چیست



mohammadreza0123
پنج شنبه 15 آبان 1393, 08:19 صبح
سلام بچه ها

من در کدویژن یه برنامه نوشتم

که مثلا اگه پین بی 0 و بی 1 ، 0 بود بیاد عملیات جمع نیم بایت اول پورت آ رو با نیم بایت دومش جمع کنه

و همین طور اگه بی 0 و بی 1 ،0و1 ---- 1و0 ----- 1و1 بود عملیات تفریق نیم بایت اول پورت آ و نیم بایت دومش و همین طور چند عمل دیگه

که باید خروجی نتیجه این عملیات رو نشون بده




توو کدویژن خودش عملیات جمع و تفریق رو به صورت باینری انجام میده

استادمون گفته باید محاسبات two's comlement باشه

یعنی چی

؟

یعنی این کاری که من کردم الان اشتباهه؟؟؟؟؟؟؟؟؟؟؟؟

کد من به صورت زیر در کدویژن هست برای اتمگا 16



#include <mega16.h>
unsigned char sum(unsigned char x,unsigned char y)
{
return(x+y);
}
unsigned char def(char x,char y)
{
return(x-y);
}


void main()
{
unsigned char al,ah,all,ahl;
DDRA=0x00;
DDRC=0xff;
DDRB=0x00;
al=PINA%16;
ah=PINA/16;
all=al%4;
ahl=ah%4;

while(1)
{
if((PINB.0==0)&&(PINB.1==0))
{
PORTC=sum(ah,al);
}
if((PINB.0==0)&&(PINB.1==1))
{
PORTC=def(ah,al);
}
if((PINB.0==1)&&(PINB.1==0))
{
PORTC=sum(ahl,all);
}
if((PINB.0==1)&&(PINB.1==1))
{
PORTC=def(ahl,all);
}




}

}





این کد جواب میده بهم

اما اگه بخوام محاسبات two's complement باشه و در خروجی نمایش داده بشه باید چه کنم

لطفا با پیام خصوصی منو با خبر کنید

ممنونم پیشاپیش

manoto1371
جمعه 16 آبان 1393, 11:58 صبح
سلام
محاسبات مبنای 2 یعمی اینکه تمام عملیات در حالت متمم 2 صورت گیرد
در اعداد مثبت تفاوتی ندارد، اما در اعداد منفی سه سیستم علامت مقدار، متمم 1، و متمم 2 وجود دارد
شما باید از سومی پیروی کنید
در گوگل سرچ کنید کامل با توضیح فراوان خواهید یافت