عملگرهای بیتی در پایتون
عملگرهای بیتی در پایتون به شما این امکان را میدهند که عملیاتهای بیتی روی اعداد صحیح انجام دهید. این عملگرها با بیتهای مختلف از یک عدد کار میکنند و نتیجه را در قالب یک عدد صحیح جدید تولید میکنند.
فهرست عناوین
عملگر بیتی 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) برای این کار استفاده کنید.