عملیات بیتی (Bit Manipulation)

عملیات بیتی: AND/OR/XOR و ترفندهای آن‌ها؛ تک‌بیتی گمشده، شمارش یک‌ها و مجموعه با بیت‌مپ

چرا بیت‌ها؟

کامپیوتر در سطح بیت کار می‌کند — عملیات بیتی سریع‌ترین عملیات‌ها هستند و برای مسائل خاص، راه‌حل‌های فوق‌العاده ظریف می‌سازند.

عملگرهای پایه

عملگرناممثال (۵=101، ۳=011)
&AND101 & 011 = 001
|OR101 | 011 = 111
^XOR101 ^ 011 = 110
~NOT~101 = ...010 (معکوس)
<<شیفت چپ101 << 1 = 1010 (×۲)
>>شیفت راست101 >> 1 = 10 (÷۲)

خواص جادویی XOR

نتیجه: XOR همه اعداد جفت + یک تکی = همان تکی! (پایه «تک‌بیتی گمشده»)

ترفندهای پرکاربرد

ترفندکدکاربرد
فرد/زوجn & 1۱ = فرد
توان ۲؟n & (n-1) == 0۸=1000، ۷=0111
حذف آخرین بیت ۱n & (n-1)شمارش یک‌ها
آخرین بیت ۱n & (-n)BIT/Fenwick
ضرب/تقسیم ۲n << 1 / n >> 1سریع
جابه‌جایی بدون متغیرa ^= b; b ^= a; a ^= bترفند معروف

مسائل کلاسیک

نکته: در پایتون اعداد بی‌نهایت‌اند (بدون سرریز) اما در C++/Java با شیفت‌ها مراقب signed/unsigned باشید. برای ماسک‌های بزرگ، پایتون راحت‌ترین است!

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل الگوریتم‌ها است.

ابزارهای مرتبط