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

عملگر بیتی AND (&):

عملگر "&" با استفاده از انجام عملیات "و" بین دو عدد، بیت‌های مشابه را با هم مقایسه کرده و نتیجه را تولید می‌کند. در نتیجه، اگر هر دو عدد در یک موقعیت بیتی 1 باشند، نتیجه آن موقعیت 1 خواهد بود؛ در غیر این صورت نتیجه 0 خواهد بود.

مثال:

a = 5    # معادله باینری: 101
b = 3    # معادله باینری: 011
result = a & b
print(result)  # خروجی: 1 (در معادله باینری: 001)

 

عملگر OR ( | ):

عملگر "|" با استفاده از انجام عملیات "یا" بین دو عدد، بیت‌های مشابه را با هم مقایسه کرده و نتیجه را تولید می‌کند. در نتیجه، اگر حداقل یکی از دو عدد در یک موقعیت بیتی 1 باشند، نتیجه آن موقعیت 1 خواهد بود؛ در غیر این صورت نتیجه 0 خواهد بود.

مثال:

a = 5    # معادله باینری: 101
b = 3    # معادله باینری: 011
result = a | b
print(result)  # خروجی: 7 (در معادله باینری: 111)

 

عملگر XOR (^):

عملگر "^" با استفاده از انجام عملیات "یا منطقی نیمه‌تنها" (XOR) بین دو عدد، بیت‌های مشابه را با هم مقایسه کرده و نتیجه را تولید می‌کند. در نتیجه، اگر تنها یکی از دو عدد در یک موقعیت بیتی 1 باشد، نتیجه آن موقعیت 1 خواهد بود؛ در صورتی که هر دو یا هیچ‌کدام 1 نباشند، نتیجه 0 خواهد بود.

مثال:

a = 5    # معادله باینری: 101
b = 3    # معادله باینری: 011
result = a ^ b
print(result)  # خروجی: 6 (در معادله باینری: 110)

 

عملگر NOT (~):

عملگر "~" با استفاده از انجام عملیات "نقیض" (NOT) بر روی یک عدد، تمام بیت‌های آن را معکوس می‌کند (از 1 به 0 و از 0 به 1). توجه داشته باشید که این عملگر به تنهایی عمل می‌کند و نیازی به دو عدد ندارد.

مثال:

a = 5    # معادله باینری: 101
result = ~a
print(result)  # خروجی: -6 (در معادله باینری: 11111111111111111111111111111010)

 

عملگر Shift Left Bitwise (>>):

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

مثال:

a = 5    # معادله باینری: 101
result = a << 2
print(result)  # خروجی: 20 (در معادله باینری: 10100)

 

عملگر Shift Right Bitwise (<<):

عملگر "<<" برای شیفت (جابه‌جایی) بیت‌های یک عدد به سمت راست استفاده می‌شود. این عملگر یک عدد و یک تعداد بیت انتقال می‌دهد و تمام بیت‌ها را به راست بر اساس تعداد مشخص شده منتقل می‌کند. این عملگر به تبدیل یک عدد به مقدار دو تقسیم بر توان‌های دو کمک می‌کند.

مثال:

a = 20   # معادله باینری: 10100
result = a >> 2
print(result)  # خروجی: 5 (در معادله باینری: 101)

این دو عملگر "<<" و ">>" برای انجام شیفت بیتی و تغییر طول عدد به کار می‌روند و در برنامه‌نویسی میکروکنترلرها، کار با داده‌های دودویی و موارد مشابه مفید هستند. همچنین این عملگرهای Bitwise به شما امکان کنترل دقیق‌تری بر روی بیت‌های داده‌های عددی می‌دهند و در بسیاری از موارد مفید هستند، به ویژه در برنامه‌نویسی سیستم‌های دیجیتال و کار با داده‌های پیکسل تصاویر.

 

 

تمرین

در اینجا 5 تمرین ساده برای یادگیری و کار با عملگرهای بیتی در پایتون آورده شده است. این تمرین‌ها به شما کمک می‌کنند که با کاربرد عملگرهای بیتی و منطق آن‌ها آشنا شوید.

 

 

1. محاسبه وضعیت روشن یا خاموش بودن یک بیت خاص

یک عدد صحیح (مثلاً `29`) و یک شماره بیت (مثلاً `3`) را دریافت کنید و با استفاده از عملگرهای بیتی بررسی کنید که آیا بیت مشخص‌شده در آن عدد روشن (1) یا خاموش (0) است.

راهنما: از عملگر `&` و شیفت بیتی (`<<`) برای این کار استفاده کنید.

 

2. تغییر وضعیت یک بیت خاص

یک عدد صحیح (مثلاً `29`) و یک شماره بیت (مثلاً `2`) را دریافت کنید. با استفاده از عملگرهای بیتی، وضعیت آن بیت را از 1 به 0 یا از 0 به 1 تغییر دهید و عدد جدید را نمایش دهید.

راهنما: از عملگر `^` (XOR) برای تغییر وضعیت بیت استفاده کنید.

 

3. بررسی زوج یا فرد بودن عدد با استفاده از عملگرهای بیتی

یک عدد صحیح ورودی را دریافت کنید و با استفاده از عملگر بیتی تعیین کنید که آیا این عدد زوج است یا فرد.

راهنما: از عملگر `&` برای بررسی اینکه آخرین بیت عدد 0 (زوج) یا 1 (فرد) است، استفاده کنید.

 

4. شمارش تعداد بیت‌های روشن (1) در یک عدد

یک عدد صحیح (مثلاً `29`) را دریافت کنید و با استفاده از عملگرهای بیتی، تعداد بیت‌های روشن (1) آن عدد را شمارش کنید.

راهنما: می‌توانید از حلقه‌ای استفاده کنید که هر بار یک بیت از عدد را چک کرده و سپس عدد را به سمت راست شیفت دهد تا بیت بعدی چک شود.

 

5. تغییر جای دو عدد با استفاده از عملگرهای بیتی

دو عدد صحیح (مثلاً `a = 5` و `b = 7`) را دریافت کنید و بدون استفاده از متغیر کمکی، جای آن‌ها را با استفاده از عملگرهای بیتی تغییر دهید.

راهنما: از سه بار استفاده از عملگر `^` (XOR) برای این کار استفاده کنید.