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

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

يُجرِي المعامل & في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين 1، فالقيمة الناتجة عن تطبيق العملية AND عليهما هي 1؛ خلا ذلك، ستكون القيمة الناتج هي 0. تفحص الشكل التالي لفهم العملية بوضوح:

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

في أردوينو، حجم العدد الصحيح (int) هو 16 بت، لذا يؤدي استعمال المعامل & مع عددين صحيحين إلى تنفيذ 16 عملية AND متزامنة في وقتٍ واحدٍ.

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

operand1 & operand2;

أمثلة

في المثال التالي:

int a =  92;    // 0000000001011100 :القيمة الثنائية هي
int b = 101;    // 0000000001100101 :القيمة الثنائية هي
int c = a & b;  // القيمة الثنائية الناتجة هي: 0000000001000100، أو 68 كقيمة عشرية

ستُجرَى العملية AND على كل بت من بتات العددين a و b الصحيحين ذوي الحجم 16 بت، وستُخزَّن البتات الناتجة (16 بت) في المتغير c التي تساوي 01000100 في الوضع الثنائي و 68 في الوضع العشري. أحد أشهر استعمالات العملية AND مع الأعداد الثنائية هو اختيار بت محدد (أو مجموعة من البتات) من قيمة عددية صحيحة، وتدعى هذه العملية «التقنيع» (masking). تفحَّص المثال التالي الذي يشرح ذلك:

PORTD = PORTD & B00000011;  
// (xx & 11 == xx) ستُمسَح قيمة البتات من 2 وحتى 7 وسيُترَك البتين 0 و 1 دون تغيير

انظر أيضًا

  • درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.

مصادر