الفرق بين المراجعتين لصفحة: «Arduino/compound operators/compoundbitwiseand»
جميل-بيلوني (نقاش | مساهمات) أنشأ الصفحة ب'يُستعمَل المعامل <code>=&</code> المركَّب عادةً مع متغير وثابت لتصفير قيمة بت محدَّد (أي جعله في الح...' |
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
||
سطر 1: | سطر 1: | ||
يُستعمَل المعامل <code>=&</code> المركَّب عادةً مع | <noinclude>{{DISPLAYTITLE:المعامل <code>=&</code> في أردوينو}}</noinclude> | ||
يُستعمَل المعامل <code>=&</code> المركَّب عادةً مع متغيرٍ وثابتٍ لتصفير قيمة بت محدَّد (أي جعل قيمته 0 أو LOW). يشار غالبًا إلى هذه العملية في المراجع على أنَّها عملية «تصفير» (clearing) أو «إعادة ضبط» (resetting) للبتات. | |||
اطلع على الشكل التالي الذي يشرح تطبيق المعامل <code>&</code> مع الأعداد الثنائية:<syntaxhighlight lang="arduino"> | اطلع على الشكل التالي الذي يشرح تطبيق المعامل <code>[[Arduino/bitwise operators/bitwiseand|&]]</code> مع الأعداد الثنائية:<syntaxhighlight lang="arduino"> | ||
0 0 1 1 operand1 | 0 0 1 1 operand1 | ||
0 1 0 1 operand2 | 0 1 0 1 operand2 | ||
سطر 8: | سطر 9: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==البنية العامة== | |||
== البنية العامة == | |||
<syntaxhighlight lang="arduino"> | <syntaxhighlight lang="arduino"> | ||
x &= y; // x = x & y; | x &= y; // x = x & y; يكافئ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==المعاملات== | |||
== المعاملات == | ===<code>x</code>=== | ||
متغيرٌ من النوع: [[Arduino/char|محرف]]، أو [[Arduino/int|عدد صحيح]]، أو [[Arduino/long|عدد طويل]]. | |||
=== <code>x</code> === | ===<code>y</code>=== | ||
متغيرٌ من النوع: | متغيرٌ أو ثابتٌ من النوع: [[Arduino/char|محرف]]، أو [[Arduino/int|عدد صحيح]]، أو [[Arduino/long|عدد طويل]]. | ||
==أمثلة== | |||
=== <code>y</code> === | تصفَّر قيمة البتات عند تطبيق العملية AND -عبر المعامل [[Arduino/bitwise operators/bitwiseand|<code>&</code>]]- عليها مع أصفارٍ، لذا يكون المثال التالي محقق دومًا لأي نوع من المتغيرات:<syntaxhighlight lang="arduino"> | ||
متغيرٌ أو ثابتٌ من النوع: | |||
== أمثلة == | |||
تصفَّر قيمة البتات | |||
myByte & B00000000 = 0; | myByte & B00000000 = 0; | ||
</syntaxhighlight>أمَّا قيمة البتات التي | </syntaxhighlight>أمَّا قيمة البتات التي تطبَّق العملية AND -عبر المعامل [[Arduino/bitwise operators/bitwiseand|<code>&</code>]]- عليها مع واحدات ستبقى نفسها دون تغيير:<syntaxhighlight lang="arduino"> | ||
myByte & B11111111 = myByte; | myByte & B11111111 = myByte; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==ملاحظات وتحذيرات== | |||
بما أنَّنا نتعامل مع بتات عند استعمال [[Arduino/bitwise operators|معاملات الأعداد الثنائية]]، فمن الملائم استعمال الصيغة الثنائية مع الثوابت التي نستخدمها. لا تتغير قيمة الأعداد عند تمثيلها بأنظمة عدٍّ مختلفةٍ (مثل النظام الثنائي والعشري)، إلا أنَّها تصبح عصيَّةً على الفهم بعض الشيء إن لم تمثَّل بالنظام العشري المألوف لدى البشر. يُكتَب أحيانًا الصفر بالشكل <code>B00000000</code> للتوضيح فقط مع أنَّ الصفرَ هو صفرٌ في أي نظام عدِّ كان. | |||
بناءً على ما سبق، لتصفير البت الأول والثاني فقط (ضبط قيمتهما إلى 0) في متغيرٍ دون المساس بالبتات الأخرى، يمكن استعمال المعامل <code>=&</code> المركب مع الثابت <code>B11111100</code>، الذي يدعى «قناع»:<syntaxhighlight lang="arduino"> | |||
بناءً على ما سبق، لتصفير البت الأول والثاني فقط (ضبط | |||
1 0 1 0 1 0 1 0 المتغير | 1 0 1 0 1 0 1 0 المتغير | ||
1 1 1 1 1 1 0 0 القناع | 1 1 1 1 1 1 0 0 القناع | ||
سطر 41: | سطر 36: | ||
-------------- -- | -------------- -- | ||
صُفِّرت لم تتغير | صُفِّرت لم تتغير | ||
</syntaxhighlight>يمكن إعادة تمثيل الشكل السابق مع تبديل الرمز x مكان بتات المتغير لمعرفة البتات التي تغيرت من تلك التي لم تتغير بعد تنفيذ العملية:<syntaxhighlight lang="arduino"> | </syntaxhighlight>يمكن إعادة تمثيل الشكل السابق مع تبديل الرمز <code>x</code> مكان بتات المتغير لمعرفة البتات التي تغيرت من تلك التي لم تتغير بعد تنفيذ العملية:<syntaxhighlight lang="arduino"> | ||
x x x x x x x x المتغير | x x x x x x x x المتغير | ||
1 1 1 1 1 1 0 0 القناع | 1 1 1 1 1 1 0 0 القناع | ||
سطر 49: | سطر 44: | ||
-------------- -- | -------------- -- | ||
صُفِّرت لم تتغير | صُفِّرت لم تتغير | ||
</syntaxhighlight>الآن، يجب أن يبدو المثال التالي واضحًا ومفهومًا وأن تعرف كيفية استعمال المعامل <code>& | </syntaxhighlight>الآن، يجب أن يبدو المثال التالي واضحًا ومفهومًا وأن تعرف كيفية استعمال المعامل <code>=&</code> لتصفير البتات التي تريدها:<syntaxhighlight lang="arduino"> | ||
myByte = B10101010; | myByte = B10101010; | ||
myByte &= B11111100; // B10101000 :الناتج هو | myByte &= B11111100; // B10101000 :الناتج هو | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | |||
* المعامل <code>[[Arduino/compound operators/compoundmultiplication|=*]]</code>: يعدُّ اختزالٌ لعملية ضرب القيمة الحالية لمتغيرٍ بثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه. | |||
* المعامل <code>[[Arduino/compound operators/increment|++]]</code>: يزيد قيمة المتغير المستعمل معه بمقدار 1. | |||
* المعامل <code>[[Arduino/compound operators/compoundaddition|=+]]</code>: يعدُّ اختزالٌ لعملية جمع القيمة الحالية لمتغيرٍ مع ثابتٍ أو متغيرٍ آخر ثمَّ تخزين الناتج في المتغير نفسه. | |||
* المعامل <code>[[Arduino/compound operators/decrement|--]]</code>: ينقص قيمة المتغير المستعمل معه بمقدار 1. | |||
* المعامل <code>[[Arduino/compound operators/compoundsubtraction|=-]]</code>: يعدُّ اختزالٌ لعملية طرح ثابتٍ أو متغيرٍ آخر من القيمة الحالية لمتغيرٍ ثمَّ تخزين الناتج في المتغير نفسه. | |||
* المعامل <code>[[Arduino/compound operators/compounddivision|=/]]</code>: يعدُّ اختزالٌ لعملية قسمة القيمة الحالية لمتغيرٍ على ثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه. | |||
* المعامل <code>[[Arduino/compound operators/compoundbitwisexor|=^]]</code>: يُستعمَل المركَّب عادةً مع متغير وثابت لقلب (عكس) قيمة بت محدَّد. | |||
* المعامل <code>[[Arduino/compound operators/compoundbitwiseor|=|]]</code>: يُستعمَل المركَّب عادةً مع متغير وثابت من لضبط قيمة بت محدَّد (ضبطه إلى القيمة 1 أو HIGH). | |||
* المعامل <code>[[Arduino/bitwise operators/bitwiseand|&]]</code>: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. | |||
==مصادر== | |||
*[https://www.arduino.cc/reference/en/language/structure/compound-operators/compoundbitwiseand/ صفحة المعامل =& في توثيق أردوينو الرسمي.] | |||
== مصادر == | [[تصنيف: Arduino]] | ||
* [https://www.arduino.cc/reference/en/language/structure/compound-operators/compoundbitwiseand/ صفحة المعامل & | [[تصنيف: Arduino Operator]] | ||
[[تصنيف: Arduino Compound Operator]] |
المراجعة الحالية بتاريخ 15:55، 11 أكتوبر 2018
يُستعمَل المعامل =&
المركَّب عادةً مع متغيرٍ وثابتٍ لتصفير قيمة بت محدَّد (أي جعل قيمته 0 أو LOW). يشار غالبًا إلى هذه العملية في المراجع على أنَّها عملية «تصفير» (clearing) أو «إعادة ضبط» (resetting) للبتات.
اطلع على الشكل التالي الذي يشرح تطبيق المعامل &
مع الأعداد الثنائية:
0 0 1 1 operand1
0 1 0 1 operand2
----------
0 0 0 1 result = operand1 & operand2
البنية العامة
x &= y; // x = x & y; يكافئ
المعاملات
x
متغيرٌ من النوع: محرف، أو عدد صحيح، أو عدد طويل.
y
متغيرٌ أو ثابتٌ من النوع: محرف، أو عدد صحيح، أو عدد طويل.
أمثلة
تصفَّر قيمة البتات عند تطبيق العملية AND -عبر المعامل &
- عليها مع أصفارٍ، لذا يكون المثال التالي محقق دومًا لأي نوع من المتغيرات:
myByte & B00000000 = 0;
أمَّا قيمة البتات التي تطبَّق العملية AND -عبر المعامل &
- عليها مع واحدات ستبقى نفسها دون تغيير:
myByte & B11111111 = myByte;
ملاحظات وتحذيرات
بما أنَّنا نتعامل مع بتات عند استعمال معاملات الأعداد الثنائية، فمن الملائم استعمال الصيغة الثنائية مع الثوابت التي نستخدمها. لا تتغير قيمة الأعداد عند تمثيلها بأنظمة عدٍّ مختلفةٍ (مثل النظام الثنائي والعشري)، إلا أنَّها تصبح عصيَّةً على الفهم بعض الشيء إن لم تمثَّل بالنظام العشري المألوف لدى البشر. يُكتَب أحيانًا الصفر بالشكل B00000000
للتوضيح فقط مع أنَّ الصفرَ هو صفرٌ في أي نظام عدِّ كان.
بناءً على ما سبق، لتصفير البت الأول والثاني فقط (ضبط قيمتهما إلى 0) في متغيرٍ دون المساس بالبتات الأخرى، يمكن استعمال المعامل =&
المركب مع الثابت B11111100
، الذي يدعى «قناع»:
1 0 1 0 1 0 1 0 المتغير
1 1 1 1 1 1 0 0 القناع
----------------------
1 0 1 0 1 0 0 0 الناتج
| | | |
-------------- --
صُفِّرت لم تتغير
يمكن إعادة تمثيل الشكل السابق مع تبديل الرمز x
مكان بتات المتغير لمعرفة البتات التي تغيرت من تلك التي لم تتغير بعد تنفيذ العملية:
x x x x x x x x المتغير
1 1 1 1 1 1 0 0 القناع
----------------------
x x x x x x 0 0 الناتج
| | | |
-------------- --
صُفِّرت لم تتغير
الآن، يجب أن يبدو المثال التالي واضحًا ومفهومًا وأن تعرف كيفية استعمال المعامل =&
لتصفير البتات التي تريدها:
myByte = B10101010;
myByte &= B11111100; // B10101000 :الناتج هو
انظر أيضًا
- المعامل
=*
: يعدُّ اختزالٌ لعملية ضرب القيمة الحالية لمتغيرٍ بثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه. - المعامل
++
: يزيد قيمة المتغير المستعمل معه بمقدار 1. - المعامل
=+
: يعدُّ اختزالٌ لعملية جمع القيمة الحالية لمتغيرٍ مع ثابتٍ أو متغيرٍ آخر ثمَّ تخزين الناتج في المتغير نفسه. - المعامل
--
: ينقص قيمة المتغير المستعمل معه بمقدار 1. - المعامل
=-
: يعدُّ اختزالٌ لعملية طرح ثابتٍ أو متغيرٍ آخر من القيمة الحالية لمتغيرٍ ثمَّ تخزين الناتج في المتغير نفسه. - المعامل
=/
: يعدُّ اختزالٌ لعملية قسمة القيمة الحالية لمتغيرٍ على ثابتٍ أو متغيرٍ آخر ثم تخزين الناتج في المتغير نفسه. - المعامل
=^
: يُستعمَل المركَّب عادةً مع متغير وثابت لقلب (عكس) قيمة بت محدَّد. - المعامل
=|
: يُستعمَل المركَّب عادةً مع متغير وثابت من لضبط قيمة بت محدَّد (ضبطه إلى القيمة 1 أو HIGH). - المعامل
&
: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة.