الفرق بين المراجعتين لصفحة: «Arduino/bitwise operators/bitwiseand»

من موسوعة حسوب
إنشاء الصفحة.
 
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المعامل <code>&</code> في  أردوينو}}</noinclude>
<noinclude>{{DISPLAYTITLE:المعامل <code>&</code> في  أردوينو}}</noinclude>
يُجرِي المعامل <code>&</code> في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين 1، فالقيمة الناتجة عن تطبيق العملية AND عليهما هي 1؛ خلا ذلك، ستكون القيمة الناتج هي 0. تفحص الشكل التالي لفهم العملية بوضوح:<syntaxhighlight lang="arduino">
يُجرِي المعامل <code>&</code> في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين 1، فالقيمة الناتجة عن تطبيق العملية AND عليهما هي 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
سطر 6: سطر 6:
0  0  0  1    result = operand1 & operand2
0  0  0  1    result = operand1 & operand2
</syntaxhighlight>في أردوينو، حجم [[Arduino/int|العدد الصحيح]] (int) هو 16 بت، لذا يؤدي استعمال المعامل <code>&</code> مع عددين صحيحين إلى تنفيذ 16 عملية AND متزامنة في وقتٍ واحدٍ.
</syntaxhighlight>في أردوينو، حجم [[Arduino/int|العدد الصحيح]] (int) هو 16 بت، لذا يؤدي استعمال المعامل <code>&</code> مع عددين صحيحين إلى تنفيذ 16 عملية AND متزامنة في وقتٍ واحدٍ.
 
==البنية العامة==
== البنية العامة ==
<syntaxhighlight lang="arduino">
<syntaxhighlight lang="arduino">
operand1 & operand2;
operand1 & operand2;
</syntaxhighlight>
</syntaxhighlight>
 
==أمثلة==
== أمثلة ==
في المثال التالي:<syntaxhighlight lang="arduino">
في المثال التالي:<syntaxhighlight lang="arduino">
int a =  92;    // 0000000001011100 :القيمة الثنائية هي
int a =  92;    // 0000000001011100 :القيمة الثنائية هي
int b = 101;    // 0000000001100101 :القيمة الثنائية هي
int b = 101;    // 0000000001100101 :القيمة الثنائية هي
int c = a & b;  // القيمة الثنائية الناتجة هي: 0000000001000100، أو 68 كقيمة عشرية
int c = a & b;  // القيمة الثنائية الناتجة هي: 0000000001000100، أو 68 بالنظام العشري
</syntaxhighlight>ستُجرَى العملية AND على كل بت من بتات العددين a و b الصحيحين ذوي الحجم 16 بت، وستُخزَّن البتات الناتجة (16 بت) في المتغير c التي تساوي 01000100 في الوضع الثنائي و 68 في الوضع العشري.
</syntaxhighlight>ستُجرَى العملية AND على كل بت من بتات العددين a و b الصحيحين ذوي الحجم 16 بت، وستُخزَّن البتات الناتجة (16 بت) في المتغير <code>c</code> التي تساوي 01000100 في النظام الثنائي و 68 في النظام العشري.


أحد أشهر استعمالات العملية AND مع الأعداد الثنائية هو اختيار بت محدد (أو مجموعة من البتات) من قيمة عددية صحيحة، وتدعى هذه العملية «التقنيع» (masking). تفحَّص المثال التالي الذي يشرح ذلك:<syntaxhighlight lang="arduino">
أحد أشهر استعمالات العملية AND مع الأعداد الثنائية هو اختيار بت محدَّد (أو مجموعة من البتات) من قيمة عددية صحيحة، وتدعى هذه العملية «التقنيع» (masking). تفحَّص المثال التالي الذي يشرح ذلك:<syntaxhighlight lang="arduino">
PORTD = PORTD & B00000011;   
PORTD = PORTD & B00000011;   
// (xx & 11 == xx) ستُمسَح قيمة البتات من 2 وحتى 7 وسيُترَك البتين 0 و 1 دون تغيير
// (xx & 11 == xx) ستُمسَح قيمة البتات من 2 وحتى 7 وسيُترَك البتين 0 و 1 دون تغيير


</syntaxhighlight>
</syntaxhighlight>
==انظر أيضًا==
* المعامل <code>[[Arduino/bitwise operators/bitshiftleft|>>]]</code>: يُجرِي البتات الواقعة على يساره إلى '''اليسار''' عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
* المعامل <code>[[Arduino/bitwise operators/bitshiftright|<<]]</code>: يُجرِي البتات الواقعة على يساره إلى '''اليمين''' عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
* المعامل <code>[[Arduino/bitwise operators/bitwisexor|^]]</code>: يُجرِي في لغة ++C العملية XOR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.
* المعامل <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>- ويعطي القيمة العددية الناتجة.
* المعامل <code>[[Arduino/boolean operators/logicaland|&&]]</code>: يطبِّق العملية AND المنطقية على قيمتين أو تعبيرين منطقيين ويعيد القيمة المنطقية الناتجة.
* المعامل <code>[[Arduino/compound operators/compoundbitwiseand|=&]]</code>: يُستعمَل المركَّب عادةً مع متغير وثابت لتصفير قيمة بت محدَّد (أي جعله في الحالة LOW).


== انظر أيضًا ==
*درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.
* درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.
==مصادر==
 
*[https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitwiseand/ صفحة المعامل & في توثيق أردوينو الرسمي.]
== مصادر ==
* [https://www.arduino.cc/reference/en/language/structure/bitwise-operators/bitwiseand/ صفحة المعامل & في توثيق أردوينو الرسمي.]
[[تصنيف: Arduino]]
[[تصنيف: Arduino]]
[[تصنيف: Arduino Operator]]
[[تصنيف: Arduino Operator]]
[[تصنيف: Arduino Bitwise Operator]]
[[تصنيف: Arduino Bitwise Operator]]

المراجعة الحالية بتاريخ 15:43، 11 أكتوبر 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 دون تغيير

انظر أيضًا

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

مصادر