المعامل &
في أردوينو
يزيح المعامل >>
البتات الواقعة على يساره إلى اليسار عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه.
البنية العامة
variable << number_of_bits;
المعاملات
variable
القيمة العددية الثنائية المراد إزاحة البتات فيها عددًا محدَّدًا من الخانات. أنواع البيانات المسموح بها هي: بايت، وعدد صحيح، وعدد طويل.
number_of_bits
عددٌ صحيحٌ يمثِّل مقدار الإزاحة التي ستُطبَّق على العدد variable
. يجب أن تكون قيمة هذا المعامل <= 32.
أمثلة
مثالٌ على استعمال المعامل >>
:
int a = 5; // 0000000000000101 :القيمة الثنائية هي
int b = a << 3; // القيمة الثنائية هي: 0000000000101000، والقيمة في النظام العشري هي: 40
ملاحظات وتحذيرات
عند إزاحة عددٍ ما وليكن x
فرضًا بمقدار محدَّد وليكن y
(أي x << y
)، ستُفقَد البتات التي عددها y
(أي بمقدار الإزاحة) الواقعة في أقصى يسار العدد x
؛ بعبارةٍ أخرى، ستُزَاح هذه البتات خارج العدد، وسيدخل مكانها في الطرف المقابل (أقصى اليمين) أصفارٌ.
int x = 5; // 0000000000000101 :القيمة الثنائية هي
int y = 14;
int result = x << y; // القيمة الثنائية الناتجة: 0100000000000000، لاحظ أن هنالك 1 قد فُقِد
إن كنت متأكدًا من عدم خروج أي واحداتٍ موجودةٍ في العدد المزاح خارجه، فإنَّ أبسط طريقة للتفكير بآلية عمل المعامل >>
هي أنَّه يضرب العدد الواقع على يساره بالعدد 2 مرفوعًا لقوة العدد الواقع على يمينه (أي القيمة الناتجة بعد الإزاحة هي variable * 2number_of_bits
). على سبيل المثال، لتوليد الأعداد 2n
، إذ n
هي 1، 2، 3، ...إلخ.، يمكن تطبيق المثال التالي:
Operation Result
--------- ------
1 << 0 1
1 << 1 2
1 << 2 4
1 << 3 8
...
1 << 8 256
1 << 9 512
1 << 10 1024
...
يمكن استعمال المثال التالي لطباعة قيمة بايت على واجهة التخاطب التسلسلية عبر استخدام المعامل >>
لإزاحة البايت من الأسفل (الموضع الأقل أهمية [LSB]) إلى الأعلى (الموضع الأكثر أهمية [MSB]) ثم طباعة القيمة الثنائية الناتجة.
// طباعة القيمة الثنائية (0 أو 1) لبايت
void printOut1(int c) {
for (int bits = 7; bits > -1; bits--) {
// Compare bits 7-0 in byte
if (c & (1 << bits)) {
Serial.print ("1");
}
else {
Serial.print ("0");
}
}
}
انظر أيضًا
- المعامل
&
: يُجرِي في لغة ++C العملية AND على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. - المعامل
<<
: يُجرِي البتات الواقعة على يساره إلى اليمين عددًا محدَّدًا من الخانات مساويًا للقيمة الموجودة على يمينه. - المعامل
^
: يُجرِي في لغة ++C العملية XOR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. - المعامل
|
: يُجرِي في لغة ++C العملية OR على كل بتين متقابلين من بتات العددين المعطيين بشكل مستقل ويعطي القيمة العددية الناتجة. - المعامل
~
: يُجرِي في لغة ++C العملية NOT على كل بت من البتات المعطاة بشكل مستقل -بخلاف المعامل&
والمعامل|
- ويعطي القيمة العددية الناتجة.
- درسٌ عمليٌّ على العمليات الحسابية التي تجرَى على البت.