عملگرهای بیتی در آردوینو

blog
۱۳۹۶-۰۲-۳۰
4 دقیقه

AND و بیتی (&)، OR یا بیتی (|) و XOR یای منحصر بیتی (^)

عملگرهای بیتی محاسبات خود را در سطح بیت متغیرها انجام می‌دهند. این نوع عملگرها به حل طیف گسترده‌ای از مشکلات متداول برنامه‌نویسی کمک می‌کنند.

بخش زیادی از مطالبی که در این پست راجع به محاسبات بیتی آمده، از آموزشی است که در اینجا قابل‌دسترس است.

عملگرهای بیتی در آردوینو:

“و” بیتی:

عملگر و بیتی در ++C تک امپرسند (&) است و بین دو عبارت از جنس integer قرار می‌گیرد. این عملگر مستقلاً روی تک‌تک بیت‌های عملوندهایش طبق این قانون عمل می‌کند: اگر هر دو بیت ورودی یک بودند، خروجی یک می‌شود؛ وگرنه خروجی صفر است. یک راه دیگر بیان کردن این موضوع، مثال زیر است:

در آردوینو نوع int، شانزده بیتی است؛ پس استفاده از عملگر & بین دو عبارت، باعث انجام 16 عمل AND همزمان خواهد شد. مثال در یک تکه کد:

هر 16 بیت a و b با استفاده از عملگر AND پردازش و همه‌ی 16 بیت حاصل در c ذخیره می‌شوند. حاصل، مقدار 01000100 باینری است که معادل عدد 68 دهدهی است.

یکی از معمول‌ترین استفاده‌های “و” بیتی، انتخاب بیت یا بیت‌هایی خاص از یک مقدار integer است که عمل ماسک کردن (masking) نامیده می‌شود. برای مثال:

 

“یا” بیتی:

عملگر یا بیتی در ++C، نماد لوله عمودی | (پایپ) است. همانند عملگر &، این عملگر نیز مستقلاً روی تک‌تک بیت‌های عملوندهایش عمل می‌کند؛ اما واضح است که کاری که انجام می‌دهد، از عمل & متفاوت است. حاصل عملگر OR دو بیت، در صورتی یک است که یکی یا هر دو بیت 1 باشند. وگرنه حاصل صفر می‌شود. به بیانی دیگر:

مثالی از یا بیتی در تکه کدی از ++C:

 برنامه‌ای مثالی برای آردوینو uno:

کاری معمول برای عملگرهای AND و OR کاری است که برنامه‌نویسان به آن خواندن- اصلاح- نوشتن (‌Read-Modify-Write) یک پورت می‌گویند. در میکروکنترلرها، پورت یک عدد 8 بیتی است که چیزی مربوط به شرایط پین‌ها را بیان می‌کند. نوشتن روی پورت، همه‌ی پین‌ها را به‌یک‌باره کنترل می‌کند.

PORTD یک ثابت توکار است که به وضعیت خروجی پین‌های دیجیتال 0,1,2,3,4,5,6,7 اشاره دارد. اگر در یک موقعیت بیت، 1 وجود داشته باشد، آن بیت HIGH است. (پین‌ها باید با دستور ()pinMode  به صورت خروجی تعریف شوند.) پس اگر بنویسیم ;PORTD = B00110001 پین‌های 0،4 و 5 را HIGH کرده‌ایم. در این عمل نکته‌ای وجود دارد: ممکن است که ما وضعیت پین‌های 0 و 1 را نیز تغییر داده‌ باشیم؛ این دو پین‌ برای ارتباطات سریال آردوینو استفاده می‌شوند؛ پس ما ممکن است که در ارتباط سریال مداخله کرده باشیم.

الگوریتم ما برای برنامه این است:

  • PORTD را بیاورید و تنها بیت‌هایی که متناظر با پین‌های دلخواهتان (پین‌هایی که می‌خواهید کنترل کنید.) هستند را پاک کنید. (با “و” بیتی)
  • برای پین‌های تحت کنترل، مقدار PORTD اصلاح‌شده را با مقدار جدید ترکیب کنید. (با “یا” بیتی)

 

“یای منحصر” بیتی (XOR):

یک عملگر کمی غیرمعمول در ++C است که به آن یای منحصر یا XOR (اکس اُر) بیتی گویند. عملگر یای منحصر بیتی با علامت ^ نوشته می‌شود. این عملگر بسیار شبیه به عملگر “یا” بیتی | است فقط هنگامی‌که هر دو عملوند یک باشند هم نتیجه‌ی 0 می‌دهد. در واقع نتیجه‌ی این عملگر هنگامی‌که دو عملوند مشابه داشته باشد، 0 و هنگامی‌که عملوندها متفاوت باشند 1 می‌شود.

یک مثال کد ساده:

 

‌معمولا از عملگر ^ برای تغییر وضعیت برخی از بیت‌های یک عبارت صحیح (مثلا تغییر از 0 به 1 یا 1 به 0) استفاده می‌شود. در یک عملیات XOR اگر در بیت ماسک عدد 1 باشد، آن بیت معکوس شده؛ اگر 0 باشد، بیت معکوس نشده و همان مقدار باقی می‌ماند. در زیر برنامه‌ای را برای چشمک زدن پین دیجیتال 5 می‌بینید:

 

 

عملگرهای بولی در آردوینو

منبع

اطلاعات
0
0
لینک و اشتراک
profile

Yalda

متخصص الکترونیک

علاقه‌مند به یادگیری چیزهای جدید!

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله