ما در برنامه نویسی ، عملگر های ساده ای مثل جمع ، منها ، ضرب و تقسیم و ... داریم. به جز این عملگر های ساده که عملگر های پایه ی ریاضی هستند ، عمگلر های دیگری هم وجود دارند که کار آن ها با توجه به اعداد دو دویی (binary) است.
کاربرد عملگر های بیتی
کاربرد اصلی عملگر ها همین انجام اعمال بیتی روی اعداد است. یک برنامه نویس می تواند با استفاده از این عملگر های روی بیت های کاراکتر های برنامه ی خود تغییراتی ایجاد کند و به این شکل آن را از دید دیگران مخفی کند (مبهم یا رمزگذاری کند) (برای مطالعه درباره ی obfuscation و encryption اینجا کلیک کنید)
عملگر های بیتی (bitwise operators)
در بیشتر زبان های برنامه نویسی ، این عملگر ها که در پایین لیست شده اند ، وجود دارند. (a و b عدد هستند)
مثال |
نام |
نتیجه |
a & b |
And |
بیت هایی که هم در a و هم در b برابر 1 هستند. |
a | b |
Or (یا شامل و) |
بیت هایی که یا در a یا در b و یا در هر دو برابر 1 هستند. |
a ^ b |
Xor (فقط یا) |
بیت هایی که یا در a یا در b برابر 1 هستند. |
~ a |
Not |
بیت هایی که 1 هستند 0 می شوند و 0 ها 1 می شوند. |
a << b |
Shift left |
بیت های a به اندازه ی b تا به سمت چپ می روند. (یعنی توان دو) |
a >> b |
Shift right |
بیت های a به اندازه ی b تا به سمت راست می روند. (یعنی جذر) |
در کامپیوتر تمام اطلاعات به صورت 0 و 1 بررسی می شوند. گاهی اوقات در برنامه نویسی لازم است که بر اساس این 0 و 1 ها (اعداد دو دویی) کار هایی انجام شود. عملگر های بالا می توانند این امکان را به برنامه نویس بدهند که تغییرات بالا روی اعداد پیاده سازی کنند. برای فهم بهتر مثال های زیر را ببینید:
و ( AND )
مثال 1:
<<<code>>>
101 = 5
011 = 3
001 = 1
<<</code>>>
مثال 2:
<<<code>>>
1101001 = 105
1100100 = 100
1100000 = 96
<<</code>>>
یا شامل و ( OR )
مثال 1:
<<<code>>>
110 = 6
101 = 5
111 = 7
<<</code>>>
مثال 2:
<<<code>>>
1100100 = 100
0110010 = 50
1110110 = 118
<<</code>>>
یا مانع و ( XOR )
مثال 1:
<<<code>>>
00101 = 5
10111 = 23
10010 = 18
<<</code>>>
مثال 2:
<<<code>>>
1110000001 = 897
0000110100 = 52
1110110101 = 949
<<</code>>>
NOT
مثال:
<<<code>>>
a = 00000000000000000000000000000101 = 5
~ a = 11111111111111111111111111111010 = -6
<<</code>>>
shift left
مثال:
<<<code>>>
a = 000101 = 5
a << 3 = 101000 = 40
<<</code>>>
shift right
مثال:
<<<code>>>
a = 000101 = 5
a >> 2 = 000001 = 1
<<</code>>>