شیفت منطقی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

در علوم کامپیوتر، یک شیفت منطقی در واقع یک عملگر بیتی (bitwise) می‌باشد که قادر به حرکت دادن تمامی بیت‌های عملوند است.

بر خلاف شیفت محاسباتی، شیفت منطقی برای علامت عملوند ارزشی قائل نیست (نه برای نما و نه برای مانتیس عملوند).

هر بیتی از عملوند به سادگی به موقعیت خاسته شده جابجا می‌شوند و فضای خالی بیت‌ها به صورت عمومی با صفرها پر می‌شود.(با شیفت چرخشی مقایسه شود)

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

شیفت منطقی در صورتی که عملوندها اعدادی از مبنای ۲، در اجرای اعمال توان و تقسیم بسیار کارا و موثر خواهد بود..

شیفت n بیت به چپ یک عملوند با یا بی علامت، برابر با ضرب کردن آن در ۲n است.

شیفت n بیت به راست یک عملوند بی علامت، برابر با تقسیم آن در ۲n است.

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

به عنوان مثال در جاوا و جاوا اسکریپت، شیفت محاسباتی راست با <<نمایش داده می‌شوند، این در حالی است که شیفت منطقی راست با <<<نمایش داده می‌شود.

مثال[ویرایش]

در صورتی که عملوند توالی از بیت‌های ۰۱۱۱ ۰۰۰۱ (۲۳ دسیمال) باشد، در صورتی که شیفت به اندازه یک بیت داده شود به صورت زیر این اعمال انجام خواهند شد.

به چپ که نتیجه ۱۱۱۰ ۰۰۱۰ (۴۶ دسیمال)

شیفت به چپ یک بیت

به راست که نتیجه ۱۰۱۱ ۰۰۰۰ (۱۱ دسیمال)

شیفت به راست یک بیت