الفرق بين المراجعتين لصفحة: «Arduino/bitwise operators/bitwiseand»
جميل-بيلوني (نقاش | مساهمات) إنشاء الصفحة. |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:المعامل <code>&</code> في أردوينو}}</noinclude> | <noinclude>{{DISPLAYTITLE:المعامل <code>&</code> في أردوينو}}</noinclude> | ||
يُجرِي المعامل <code>&</code> في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. وفقًا لهذا التعريف، إن كانت قيمة كلا البتَّين 1، فالقيمة الناتجة عن تطبيق العملية AND عليهما هي 1؛ خلا ذلك، ستكون القيمة الناتج هي 0. | يُجرِي المعامل <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 في | </syntaxhighlight>ستُجرَى العملية AND على كل بت من بتات العددين a و b الصحيحين ذوي الحجم 16 بت، وستُخزَّن البتات الناتجة (16 بت) في المتغير <code>c</code> التي تساوي 01000100 في النظام الثنائي و 68 في النظام العشري. | ||
أحد أشهر استعمالات العملية AND مع الأعداد الثنائية هو اختيار بت | أحد أشهر استعمالات العملية 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 المنطقية على قيمتين أو تعبيرين منطقيين ويعيد القيمة المنطقية الناتجة. | |||
*درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت. | |||
* درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت. | ==مصادر== | ||
*[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]] |
مراجعة 07:08، 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 المنطقية على قيمتين أو تعبيرين منطقيين ويعيد القيمة المنطقية الناتجة.
- درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.