العودة إلى الدورة

المعاملات على مستوى البت (Bitwise Operators)

لغة C: من الصفر إلى الاحتراف - الدليل الشامل للمبتدئين

الدرس 56: المعاملات على مستوى البت (Bitwise Operators)

تعمل المعاملات على مستوى البت على البتات الفردية (0 و 1) للأنواع الصحيحة. وهي ضرورية للبرمجة منخفضة المستوى، والتشفير، وبرمجة الشبكات، وتحسين التخزين.

المعاملالوصف
&AND بت (يضبط البت إذا كان كلا البتين المقابلين 1)
``
^XOR بت (يضبط البت إذا كان البتان المقابلان مختلفين)
~NOT بت (يقلب جميع البتات: 0 يصبح 1، و 1 يصبح 0)
<<إزاحة لليسار (يزيح البتات لليسار، ويملأ اليمين بالأصفار)
>>إزاحة لليمين (يزيح البتات لليمين)

استخدام عملي: ضبط، مسح، وقلب البتات

بفرض لدينا عدد صحيح من 8 بت يسمى flags.

1. ضبط بت (باستخدام OR |)

للتأكد من أن البت الثالث (الفهرس 2) هو 1، بغض النظر عن حالته الحالية:

c unsigned char flags = 0b00100000; // قيمة مثال 32 unsigned char MASK = 0b00000100; // قناع للبت رقم 2 (القيمة 4)

// ضبط البت 2 (32 | 4 = 36) flags = flags | MASK;

2. مسح بت (باستخدام AND & مع NOT ~)

للتأكد من أن البت الخامس (الفهرس 4) هو 0:

c unsigned char flags = 0b00110000; // قيمة مثال 48 unsigned char MASK = 0b00010000; // قناع للبت رقم 4 (القيمة 16)

// مسح البت 4 (48 & ~16 = 32) flags = flags & (~MASK);

3. إزاحة البتات

الإزاحة لليسار (<<) تعادل الضرب في قوى العدد 2 (إذا لم يحدث تجاوز سعة).

c int x = 5; // 00000101 int y = x << 2; // 00010100 (20). أي 5 * 2^2 = 20.