الفرق بين المراجعتين ل"Arduino/bitwise operators/bitwisexor"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة.)
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:المعامل <code>^</code> في  أردوينو}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:المعامل <code>^</code> في  أردوينو}}</noinclude>
يُجرِي المعامل <code>^</code> في لغة ++C العملية XOR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين مختلفة، فالقيمة الناتجة عن تطبيق العملية XOR عليهما هي 1؛ خلا ذلك، ستكون القيمة الناتج هي 0. تفحص الشكل التالي لفهم العملية بوضوح:<syntaxhighlight lang="arduino">
+
يُجرِي المعامل <code>^</code> في لغة ++C العملية XOR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين مختلفة، فالقيمة الناتجة عن تطبيق العملية XOR عليهما هي 1؛ خلا ذلك، ستكون القيمة الناتج هي 0. اطلع على الشكل التالي لفهم العملية بوضوح:<syntaxhighlight lang="arduino">
 
0  0  1  1    operand1
 
0  0  1  1    operand1
 
0  1  0  1    operand2
 
0  1  0  1    operand2
 
----------
 
----------
 
0  1  1  0    result = operand1 ^ operand2
 
0  1  1  0    result = operand1 ^ operand2
</syntaxhighlight>في أردوينو، حجم [[Arduino/int|العدد الصحيح]] (int) هو 16 بت، لذا يؤدي استعمال المعامل <code>&</code> مع عددين صحيحين إلى تنفيذ 16 عملية AND متزامنة في وقتٍ واحدٍ.
+
</syntaxhighlight>
 
 
 
== البنية العامة ==
 
== البنية العامة ==
 
<syntaxhighlight lang="arduino">
 
<syntaxhighlight lang="arduino">
سطر 17: سطر 16:
 
int y = 10;    // 1010 :القيمة الثنائية هي
 
int y = 10;    // 1010 :القيمة الثنائية هي
 
int z = x ^ y;  // القيمة الثنائية الناتجة هي: 0110 وتساوي 6 في النظام العشري
 
int z = x ^ y;  // القيمة الثنائية الناتجة هي: 0110 وتساوي 6 في النظام العشري
</syntaxhighlight>يستعمل المعامل <code>^</code> عادةً لقلب (toggle) قيمة بتات معينة (مثل تغييرها من 0 إلى 1 أو من 1 إلى 0) في تعبير عدد صحيح. عند استعمال العملية XOR مع قناع ثنائي، ستتغير قيمة البت المقابلة للقيمة 1 في القناع بينما ستبقى القيم التي تقابل القيمة 0 في القناع دون تغيير. اطلع على المثال التالي الذي يشرح كيفية جعل ضوء الليد الموصول على الرجل 5 يومض:<syntaxhighlight lang="arduino">
+
</syntaxhighlight>يستعمل المعامل <code>^</code> عادةً لقلب (toggle) قيمة بتات معيَّنة (مثل تغييرها من 0 إلى 1 أو من 1 إلى 0) في تعبير عدد صحيح. عند استعمال العملية XOR مع قناع ثنائي، ستتغير قيمة البت المقابلة للقيمة 1 في القناع بينما ستبقى القيم التي تقابل القيمة 0 في القناع دون تغيير. اطلع على المثال التالي الذي يشرح كيفية جعل ضوء الليد الموصول على الرجل 5 يومض خلال فترات زمنية ثابتة:<syntaxhighlight lang="arduino">
 
// Blink_Pin_5
 
// Blink_Pin_5
 
// المنطقية مع الأعداد الثنائية XOR مثالٌ عن العملية   
 
// المنطقية مع الأعداد الثنائية XOR مثالٌ عن العملية   
سطر 32: سطر 31:
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
 +
* المعامل <code>[[Arduino/bitwise operators/bitwiseand|&]]</code>: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.
 +
* المعامل <code>[[Arduino/bitwise operators/bitshiftleft|>>]]</code>: يُجرِي البتات الواقعة على يساره إلى '''اليسار''' عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
 +
* المعامل <code>[[Arduino/bitwise operators/bitshiftright|<<]]</code>: يُجرِي البتات الواقعة على يساره إلى '''اليمين''' عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
 +
* المعامل <code>[[Arduino/bitwise operators/bitwiseor|<nowiki>|</nowiki>]]</code>: يُجرِي في لغة ++C العملية OR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.
 +
* المعامل <code>[[Arduino/bitwise operators/bitwisenot|~]]</code>: يُجرِي في لغة ++C العملية NOT على كل بت من البتات المعطاة بشكل مستقل -بخلاف المعامل <code>[[Arduino/bitwise operators/bitwiseand|&]]</code> والمعامل <code>[[Arduino/bitwise operators/bitwiseor|<nowiki>|</nowiki>]]</code>- ويعطي القيمة العددية الناتجة.
 +
 
* درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.
 
* درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.
  

مراجعة 07:09، 11 أكتوبر 2018

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

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

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

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);
}

انظر أيضًا

  • المعامل &: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.
  • المعامل >>: يُجرِي البتات الواقعة على يساره إلى اليسار عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
  • المعامل <<: يُجرِي البتات الواقعة على يساره إلى اليمين عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
  • المعامل |: يُجرِي في لغة ++C العملية OR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.
  • المعامل ~: يُجرِي في لغة ++C العملية NOT على كل بت من البتات المعطاة بشكل مستقل -بخلاف المعامل & والمعامل |- ويعطي القيمة العددية الناتجة.
  • درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.

مصادر