انجمن گروه موج سازان

نسخه‌ی کامل: تفاوت عملگر منطقی && و با عملگر آدرس &
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام
خسته نباشید
یه سوال داشتم:
تفاوت عملگر && و & رو تو زبان c با مثال میشه بگین؟!!!
پیشاپیش ممنون از لطفتون
با سلام سال نو مبارک چند وقتی است سر به انجمن نمیزنید ؟ به هر حال از این که دوباره شما را میبینیم خوشحالیم

عنوان ویرایش شد !!!

عملگر && یک عملگر منطقی است این اسم به این معنا است که میتوانید یک عبارت منطقی را ارزیابی کند

به طور مثال

شما میتوانید با عملگر && یک شرط And را پیاده سازی کنید

سوال زیر را در نظر بگیرید

عددد بزرگتر از ۱۰ باشد و کوچکتر از ۲۰ باشد شما مینویسید

a>۱۰ && a<20

در عملگر آدرس & که یک عملگر یگانی است ، در صورتی که این علامت قبل از متغییر بیاید منظور آدرس حافظه متغییر است

موفق باشید
سال نوی شما هم مبارک
واقعا ممنون از شما و انجمن فعالتون
منظورم از & به عنوان یه عملگر بیتیه[/align]
میشه راهنمایی کنین منظور از دستورات زیر تو زبان c (برنامه ی میکروکنترلر avr )چیه؟!!!
PORTC = PORTC | 0b00100000;
PORTC = PORTC & 0b11011111;
یا اصلا این کدها:
#define LED 7
#define SENSOR 1
DDRB = DDRB & ~(1 << SENSOR);
DDRC = DDRB | (1 << LED);
PORTC &= ~(1 << LED);
چطور عمل می کنن؟!!!
عملگر &&

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

کد:
a = b && c

به این صورت عمل می‌کنه که اولین عملوند رو چک می‌کنه در صورت false بودن مقدار false رو بر میگردونه
در غیر این صورت مقدار عملوند دوم رو بر می گردونه. (که این مقدار false یا true) است.

البته باید دقت کنین که به طور مثال ۱۲ یک مقدار true محسوب می‌شه پس اگه داشته باشیم

کد:
a = 12
b = 9
c = a && b

مقدار c میشه 9
غملگر &

and رو به صورتی بیتی اعمال میکنه

یعنی مقدار دودویی که در متغییرها هست رو در نظر می‌گیره و and دودویی رو روشون اعمال میکنه.

به طور مثال

کد:
a = 12 // 0b1100
b = 9  // 0b1001
c = a & b

الان C مقدار 1000 باینری رو گرفته که برابر با هشت هست.

عملگر های دیگر هم که اسم بردین | و ~ به ترتیب عمل or و not رو به صورت بیتی اعمال می‌کنن.

به طور مثال در

کد:
PORTC = PORTC & 0b11011111;

مقدار باینری PORTC رو در نظر می‌گیره و به صورت بیت به بیت با 0b1101111 ازش and می گیره

کد:
1 << LED

هم عملگر shift left نام داره. که مقدار درون LED رو یک بیت به چپ هل می‌ده و بیت خالی شده رو با یک پر می‌کنه
(فکر می‌:نم مقاله ویکیپدیا رو ببینین خوب باشه https://fa.wikipedia.org/wiki/%D8%B4%DB%...9%82%DB%8C )

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

کد:
0 << LED