كيفية تعيين وإعادة تعيين وتبديل بت فردي في C++؟
مرحبًا بالجميع! أنا مطور C++ مبتدئ وواجهت مشكلة أثناء العمل مع البتات. أحتاج إلى التحكم في بتات فردية داخل عدد صحيح، لكنني لا أستطيع فهم كيفية القيام بذلك بشكل صحيح.
لدي متغير uint8_t flags = 0b00000000;. أريد:
- تعيين البت الثالث (جعله 1)
- إعادة تعيين البت الخامس (جعله 0)
- تبديل البت الثاني (عكس قيمته)
حاولت كتابة الكود التالي:
uint8_t flags = 0b00000000;
// تعيين البت الثالث
flags = flags | 3; // لكن هذا لا يعمل
// إعادة تعيين البت الخامس
flags = flags & 5; // هذا أيضًا ليس صحيحًا
// تبديل البت الثاني
flags = flags ^ 2; // يبدو أنه يعمل، لكنني لست متأكدًا
المشكلة هي أنني لا أفهم كيفية تحديد رقم البت بشكل صحيح. عندما أكتب flags | 3، ظننت أن هذا سيُعيّن البت الثالث، لكن على ما يبدو، هذا لا يعمل بهذه الطريقة. قرأت عن الأقنعة البتية (bit masks)، لكنني تشوشت فيها.