آموزش, رفرنس

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

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

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

شیفت چپ (>>) ، شیفت راست (<<)

دو عملگر شیفت بیتی در آردوینو وجود دارد: عملگر شیفت چپ >> و عملگر شیفت راست <<. این عملگرها باعث می‌شوند که بیت‌های عملوند سمت چپ، به تعدادی که در عملوند سمت راست مشخص شده است، به سمت چپ یا راست شیفت داده شوند. (جا‌به‌جا شوند.)

سینتکس (نحو):

تعداد بیت >> متغیر : شیفت جپ

تعداد بیت << متغیر : شیفت راست

پارامترها:

متغیر: (از نوع‌های byte ، int، long)

تعداد بیت: عدد صحیح <= 32

مثال:

هنگامی‌که شما مقدار X را به تعداد Y بیت (x << y) شیفت می‌دهید، Y بیت از چپ‌ترین بیت‌های X گم می‌شوند؛ در‌واقع از موجودیت خارج می‌شوند.

عملیات شیفت به چپ درواقع مقدار را در 2 به توان تعداد بیت ضرب می‌کند:  X*Y^2 .

عملگر شیفت چپ در آردوینو

عملگر شیفت چپ در آردوینو

برای مثال، شیفت چپ عدد 10 به تعداد 2 بیت، 40 می‌شود. یعنی 10*2^2=40

مثال:برای ایجاد توان‌هایی از 2، این عبارات مفید هستند:

هنگامی‌که شما مقدار X را به تعداد Y بیت (x >> y) شیفت راست می‌دهید و بالاترین بیت X عدد 1 است، رفتار عملیات به نوع داده‌ی دقیق X بستگی دارد. اگر X از نوع int باشد، بالاترین بیت، بیت علامت است که همان‌طور که در بالا گفتیم، مشخص می‌کند که آیا X منفی است یا نه. در چنین موقعیتی، به دلایلی مبهم، بیت علامت به بیت‌های پایین‌تر کپی می‌شود:

این رفتار که به آن توسعه علامت گویند، معمولا رفتار دلخواه ما نیست؛ ما احتمالا می‌خواهیم که از سمت چپ، صفر وارد شود. به نظر می‌رسد که قوانین شیفت به راست در عبارات صحیح بدون علامت، متفاوت است؛ پس می‌توانید از typecast (عمل تغییر نوع داده) برای متوقت کردن کپی از سمت چپ استفاده کنید:

اگر مراقب عمل توسعه علامت باشید می‌توانید از عملگر شیفت به راست، به عنوان راهی برای تقسیم مقدار به توان‌های 2، استفاده کنید. برای مثال:

پس عملیات شیفت به راست، در واقع مقدار را به 2 به توان تعداد بیت، تقسیم می‌کند:

شیفت به راست در آردوینو

شیفت به راست در آردوینو

برای مثال شیفت راست عدد 40 به تعداد 2 بیت، 40 می‌شود. یعنی 40/ (2^2)=10

اطلاعات بیشتر از محاسبات bitwise

منبع

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *