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

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

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

0  0  1  1    operand1
0  1  0  1    operand2
----------
0  1  1  0    result = operand1 ^ operand2

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

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

operand1 ^ operand2;

أمثلة

مثالٌ على استعمال المعامل ^:

int x = 12;     // 1100 :القيمة الثنائية هي
int y = 10;     // 1010 :القيمة الثنائية هي
int z = x ^ y;  // القيمة الثنائية الناتجة هي: 0110 وتساوي 6 في النظام العشري

يستعمل المعامل ^ عادةً لقلب (toggle) قيمة بتات معينة (مثل تغييرها من 0 إلى 1 أو من 1 إلى 0) في تعبير عدد صحيح. عند استعمال العملية XOR مع قناع ثنائي، ستتغير قيمة البت المقابلة للقيمة 1 في القناع بينما ستبقى القيم التي تقابل القيمة 0 في القناع دون تغيير. اطلع على المثال التالي الذي يشرح كيفية جعل ضوء الليد الموصول على الرجل 5 يومض:

// Blink_Pin_5
// المنطقية مع الأعداد الثنائية XOR مثالٌ عن العملية  
void setup(){
DDRD = DDRD | B00100000; // OUTPUT تهيئة الرجل 5 على أنها خرج
Serial.begin(9600);
}

void loop(){
PORTD = PORTD ^ B00100000;  // تبديل قيمة البت 5 (الرجل 5) فقط دون تغيير البتات البقية
delay(100);
}

انظر أيضًا

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

مصادر