0Pricing
Competitive Programming Academy · درس

تعيين البت ومسحه وتبديله

تعديل بت واحد باستخدام الأقنعة

تعيين البت ومسحه وتبديله درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

حرّر بتًا واحدًا في كل مرة

قد تحتاج أحيانًا إلى تغيير بت واحد دون لمس البتات الأخرى. والحيلة هي إنشاء قناع يستهدف البت المطلوب تحديدًا. 🎯

أنشئ قناعًا ببت واحد

أزح 1 إلى الموضع المطلوب، فتحصل على قناع مفعّل فيه بت واحد. الموضع 0 هو البت الموجود في أقصى اليمين.

mask = 1 << 3  # 0b1000, targets bit 3

فعّل بتًا باستخدام OR

لتفعيل بت، طبّق OR على العدد والقناع. يجبر OR ذلك الموضع على أن يكون 1، ويترك كل بت آخر دون تغيير. نسمّي هذا تفعيل البت.

n = 0b0001
n |= (1 << 2)  # 0b0101

تعيين البت عملية تكرارية آمنة

إذا كان البت يساوي 1 بالفعل، فلن يغيّر تعيينه مرة أخرى شيئًا. إن إجراء OR باستخدام قناع آمن للتكرار، مما يجعله موثوقًا داخل الحلقات. 👍

القناع المعكوس

لمسح بت، تحتاج إلى قناع تكون فيه تلك الموضعية في حالة إيقاف، بينما تكون جميع المواضع الأخرى في حالة تشغيل. يقلب عامل NOT (~) كل بت في قناعك البسيط.

clear = ~(1 << 2)  # ...11111011

مسح بت باستخدام AND

أجرِ AND للعدد مع القناع المعكوس لإجبار ذلك البت على أن يصبح 0 مع الحفاظ على بقية البتات. هكذا تقوم بمسح بت واحد.

n = 0b0111
n &= ~(1 << 1)  # 0b0101

تبديل بت باستخدام XOR

يقلب XOR باستخدام قناع مكوّن من بت واحد ذلك الموضع: يتحول 0 إلى 1 و1 إلى 0. وهذا التبديل هو أبسط تعبير في سطر واحد من بين العمليات الثلاث.

n = 0b0101
n ^= (1 << 0)  # 0b0100

التحقق مما إذا كان البت مفعّلًا

أجرِ AND للعدد مع قناع مكوّن من بت واحد. إذا كانت النتيجة غير صفرية، فهذا يعني أن ذلك البت معيّن؛ وإذا كانت صفرًا، فالبت غير مفعّل.

n = 0b0100
on = (n & (1 << 2)) != 0  # True

قراءة البت على هيئة 0 أو 1

أزِح العدد إلى اليمين لإحضار البت المستهدف إلى أقصى اليمين، ثم أجرِ AND مع 1. ستحصل بالضبط على قيمة البت، أي 0 أو 1.

n = 0b1010
bit = (n >> 1) & 1  # 1

أهمية تعديل البتات

يتيح لك تعيين البتات ومسحها وتبديلها تخزين العديد من العلامات التي تشير إلى التشغيل أو الإيقاف داخل عدد صحيح واحد. وهذا هو جوهر حالة bitmask المضغوطة في مسابقات البرمجة.

انتبه إلى خطأ الواحد

تبدأ مواضع البتات من 0، لذلك يوجد البت k عند القيمة 1 مزاحةً إلى اليسار بمقدار k. الخلط بين الفهرس هو أكثر الأخطاء شيوعًا لدى المبتدئين هنا.

تحقق سريع

اختر العملية الصحيحة لمسح بت.

مراجعة: التعيين والمسح والتبديل

تقوم OR بتعيين البت، ويقوم AND مع NOT بمسحه، بينما يقوم XOR بتبديل بت واحد. أتقن هذه الأقنعة الثلاثة وستتمكن من التحكم في أي بت تريده. 🎉

الأسئلة الشائعة

هل درس «تعيين البت ومسحه وتبديله» مجاني؟

نعم — نص درس «تعيين البت ومسحه وتبديله» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «تعيين البت ومسحه وتبديله»؟

تعديل بت واحد باستخدام الأقنعة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «تعيين البت ومسحه وتبديله»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏AND وOR وXOR والإزاحات
  2. تعيين البت ومسحه وتبديله
  3. عدّ البتات وأدنى بت معيّن
  4. أقنعة البتات كمجموعات صغيرة
← العودة إلى Competitive Programming Academy