عملگرهای بیتی در جاوااسکریپت
عملگرهای بیتی (Bitwise operators) در جاوااسکریپت عملی را روی نمایش باینری 32 بیتی عملوندهای خود انجام میدهند. عملوندهای این عملگرها ابتدا به معادل 32 بیتیشان تبدیل میشوند، سپس عمل موردنظر روی آنها انجام میشود و حاصل به صورت یک عدد معمولی برگردانده میشود.
عملگرهای بیتی در جاوااسکریپت عبارتند از: عملگر AND بیتی (&)، عملگر OR بیتی (|)، عملگر NOT بیتی (~)، عملگر XOR بیتی (^)، شیفت چپ بیتی (<<
)، شیفت راست بیتی با افزودن علامت (>>
) و شیفت راست بیتی با افزودن صفر (>>>
). در ادامه با انواع عملگر بیتی در جاوااسکریپت و جزئیات آنها بیشتر آشنا میشوید.
بیشتر بخوانید: عملگرها در جاوااسکریپت
عملگر AND بیتی با نماد &
عملگر AND بیتی (با نماد &) یک عملگر دو عملوندی است. در این عمل هرگاه دو بیت متناظر در نمایش باینری عملوندها برابر با 1 باشند بیت متناظر در حاصل برابر با 1 خواهد بود و در غیراینصورت برابر با 0 خواهد بود.
به عنوان مثال برای محاسبه 5 & 3
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
و نمایش باینری عدد 3 برابر است با
0000 0000 0000 0000 0000 0000 0000 0011
به این ترتیب حاصل
5 & 3
برابر است با
0000 0000 0000 0000 0000 0000 0000 0001
که معادل است با عدد
1
از آنجایی که صرفا بیت سمت راست در هر دو عملوند برابر 1 است بیت سمت راست در حاصل برابر 1 خواهد بود و مابقی بیتهای آن صفر است.
عملگر OR بیتی با نماد |
عملگر OR بیتی (با نماد |) یک عملگر دو عملوندی است. در این عمل هرگاه حداقل یکی از دو بیت متناظر در نمایش باینری عملوندها برابر با 1 باشد بیت متناظر برابر با 1 خواهد بود و در غیراینصورت برابر با 0 خواهد بود.
به عنوان مثال برای محاسبه 5 | 3
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
و نمایش باینری عدد 3 برابر است با
0000 0000 0000 0000 0000 0000 0000 0011
به این ترتیب حاصل
5 | 3
برابر است با
0000 0000 0000 0000 0000 0000 0000 0111
که معادل است با عدد
7
عملگر NOT بیتی با نماد ~
عملگر NOT بیتی (با نماد ~) یک عملگر تک عملوندی است. این عملگر بیتهای موجود در نمایش باینری عملوند خود را معکوس میکند. به عبارت بهتر، هر بیت در حاصل این عملگر از تغییر بیت متناظر در عملوند به دست میآید (به جای هر 0 مقدار 1 و به جای هر 1، مقدار 0 درج میشود).
توجه داشته باشید سمت چپ ترین بیت یا پرارزشترین بیت در نمایش مکمل 2 (یا Two’s complement) علامت عدد را مشخص میکند. در صورتی که این بیت برابر با 0 باشد عدد مثبت و در صورتی که این بیت برابر با 1 باشد عدد منفی خواهد بود.
به عنوان مثال برای محاسبه ~5
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
به این ترتیب حاصل
~5
برابر است با
1111 1111 1111 1111 1111 1111 1111 1010
که معادل است با عدد
-6
عملگر XOR بیتی با نماد ^
عملگر XOR بیتی (با نماد ^) یک عملگر دو عملوندی است. هرگاه صرفا یکی از دو بیت متناظر در نمایش باینری عملوندها برابر با 1 باشد بیت متناظر در حاصل این عملگر 1 خواهد بود و در غیراینصورت برابر با 0 خواهد بود.
به عنوان مثال برای محاسبه 5 ^ 3
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
و نمایش باینری عدد 3 برابر است با
0000 0000 0000 0000 0000 0000 0000 0011
به این ترتیب حاصل
5 ^ 3
برابر است با
0000 0000 0000 0000 0000 0000 0000 0110
که معادل است با عدد
6
عملگر شیفت چپ بیتی با نماد <<
عملگر شیفت چپ بیتی (با نماد <<
) یک عملگر دو عملوندی است. این عملگر نمایش باینری عملوند اول خود را به تعداد عملوند دوم به سمت چپ شیفت میدهد، بیتهای اضافی شیفت داده شده به سمت چپ را نادیده میگیرد و از سمت راست به همان تعداد 0 اضافه میکند.
به عنوان مثال برای محاسبه 5 << 2
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
به این ترتیب حاصل
5 << 2
برابر است با
0000 0000 0000 0000 0000 0000 0001 0100
که معادل است با عدد
20
همانطور که در مثال فوق مشاهده میکنید نمایش باینری عملوند اول (یعنی عدد 5) به تعداد 2 بیت به سمت چپ شیفت داده شده است (دو بیت 0 سمت چپ حذف میشوند). از سمت راست نیز 2 بیت 0 اضافه شده است.
عملگر شیفت راست بیتی با افزودن علامت با نماد >>
عملگر شیفت راست بیتی با افزودن علامت (>>
) یک عملگر دو عملوندی است. این عملگر نمایش باینری عملوند اول خود را به تعداد عملوند دوم به سمت راست شیفت میدهد، بیتهای اضافی شیفت داده شده به سمت راست را نادیده میگیرد و از سمت چپ به همان تعداد مقدار سمت چپترین بیت را اضافه میکند.
به عنوان مثال برای محاسبه -5 >> 2
داریم:
نمایش باینری عدد 5- برابر است با
1111 1111 1111 1111 1111 1111 1111 1011
به این ترتیب حاصل
-5 >> 2
برابر است با
1111 1111 1111 1111 1111 1111 1111 1110
که معادل است با عدد
-2
همانطور که در مثال فوق مشاهده میکنید نمایش باینری عملوند اول (یعنی عدد -5
) به تعداد 2 بیت به سمت راست شیفت داده شده است (دو بیت 1 سمت راست حذف میشوند). از سمت چپ نیز 2 بیت 1 اضافه شده است (چون بیت اول از سمت چپ در نمایش باینری عملوند اول برابر 1 است).
عملگر شیفت راست بیتی با افزودن صفر با نماد >>>
عملگر شیفت راست بیتی با افزودن صفر (>>>
) یک عملگر دو عملوندی است. این عملگر نمایش باینری عملوند اول خود را به تعداد عملوند دوم به سمت راست شیفت میدهد، بیتهای اضافی شیفت داده شده به سمت راست را نادیده میگیرد و از سمت چپ به همان تعداد 0 اضافه میکند.
به عنوان مثال برای محاسبه 5 >>> 2
داریم:
نمایش باینری عدد 5 برابر است با
0000 0000 0000 0000 0000 0000 0000 0101
به این ترتیب حاصل
5 >>> 2
برابر است با
0000 0000 0000 0000 0000 0000 0000 0001
که معادل است با عدد
1
همانطور که در مثال فوق مشاهده میکنید نمایش باینری عملوند اول (یعنی عدد 5) به تعداد 2 بیت به سمت راست شیفت داده شده است (دو بیت 01 سمت راست حذف میشوند). از سمت چپ نیز 2 بیت 0 اضافه شده است.