المعامل =& في أردوينو

من موسوعة حسوب
< Arduino‏ | compound operators
مراجعة 15:55، 11 أكتوبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

يُستعمَل المعامل =& المركَّب عادةً مع متغيرٍ وثابتٍ لتصفير قيمة بت محدَّد (أي جعل قيمته 0 أو LOW). يشار غالبًا إلى هذه العملية في المراجع على أنَّها عملية «تصفير» (clearing) أو «إعادة ضبط» (resetting) للبتات.

اطلع على الشكل التالي الذي يشرح تطبيق المعامل & مع الأعداد الثنائية:

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  0  0  1    result = operand1 & operand2

البنية العامة

x &= y;   // x = x & y; يكافئ

المعاملات

x

متغيرٌ من النوع: محرف، أو عدد صحيح، أو عدد طويل.

y

متغيرٌ أو ثابتٌ من النوع: محرف، أو عدد صحيح، أو عدد طويل.

أمثلة

تصفَّر قيمة البتات عند تطبيق العملية AND -عبر المعامل &- عليها مع أصفارٍ، لذا يكون المثال التالي محقق دومًا لأي نوع من المتغيرات:

myByte & B00000000 = 0;

أمَّا قيمة البتات التي تطبَّق العملية AND -عبر المعامل &- عليها مع واحدات ستبقى نفسها دون تغيير:

myByte & B11111111 = myByte;

ملاحظات وتحذيرات

بما أنَّنا نتعامل مع بتات عند استعمال معاملات الأعداد الثنائية، فمن الملائم استعمال الصيغة الثنائية مع الثوابت التي نستخدمها. لا تتغير قيمة الأعداد عند تمثيلها بأنظمة عدٍّ مختلفةٍ (مثل النظام الثنائي والعشري)، إلا أنَّها تصبح عصيَّةً على الفهم بعض الشيء إن لم تمثَّل بالنظام العشري المألوف لدى البشر. يُكتَب أحيانًا الصفر بالشكل B00000000 للتوضيح فقط مع أنَّ الصفرَ هو صفرٌ في أي نظام عدِّ كان.

بناءً على ما سبق، لتصفير البت الأول والثاني فقط (ضبط قيمتهما إلى 0) في متغيرٍ دون المساس بالبتات الأخرى، يمكن استعمال المعامل =& المركب مع الثابت B11111100، الذي يدعى «قناع»:

1  0  1  0  1  0  1  0    المتغير
1  1  1  1  1  1  0  0     القناع
----------------------
1  0  1  0  1  0  0  0     الناتج
|              |  |  |
 --------------    --
    صُفِّرت      لم تتغير

يمكن إعادة تمثيل الشكل السابق مع تبديل الرمز x مكان بتات المتغير لمعرفة البتات التي تغيرت من تلك التي لم تتغير بعد تنفيذ العملية:

x  x  x  x  x  x  x  x    المتغير
1  1  1  1  1  1  0  0     القناع
----------------------
x  x  x  x  x  x  0  0     الناتج
|              |  |  |
 --------------    --
    صُفِّرت      لم تتغير

الآن، يجب أن يبدو المثال التالي واضحًا ومفهومًا وأن تعرف كيفية استعمال المعامل =& لتصفير البتات التي تريدها:

myByte =  B10101010;
myByte &= B11111100; // B10101000 :الناتج هو

انظر أيضًا

  • المعامل =*: يعدُّ اختزالٌ لعملية ضرب القيمة الحالية لمتغيرٍ بثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه.
  • المعامل ++: يزيد قيمة المتغير المستعمل معه بمقدار 1.
  • المعامل =+: يعدُّ اختزالٌ لعملية جمع القيمة الحالية لمتغيرٍ مع ثابتٍ أو متغيرٍ آخر ثمَّ تخزين الناتج في المتغير نفسه.
  • المعامل --: ينقص قيمة المتغير المستعمل معه بمقدار 1.
  • المعامل =-: يعدُّ اختزالٌ لعملية طرح ثابتٍ أو متغيرٍ آخر من القيمة الحالية لمتغيرٍ ثمَّ تخزين الناتج في المتغير نفسه.
  • المعامل =/: يعدُّ اختزالٌ لعملية قسمة القيمة الحالية لمتغيرٍ على ثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه.
  • المعامل =^: يُستعمَل المركَّب عادةً مع متغير وثابت لقلب (عكس) قيمة بت محدَّد.
  • المعامل =|: يُستعمَل المركَّب عادةً مع متغير وثابت من لضبط قيمة بت محدَّد (ضبطه إلى القيمة 1 أو HIGH).
  • المعامل &: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.

مصادر