في البداية هذه تسمى Operator وليس تعليمة . هي ضمن مجموعة الاوامر التي تستخدم في التعامل مع الارقم مثل الزائد + والناقص - والضرب * والقسمة والرفع لقوة ^ . بمعنى هي ليست كأجراء عادي . واستخدامها يكون بوضعها بين رقمين كحال اي عملية اخرى
التعليمة shl هي اختصار لـ Shift Left وهناك تعليمة اخرى هي shr اختصار لـ Shift Rigth .
هو
var
value: integer;
...
value := 1 shl 3
ما تقوم بعمله هو ازاحة لبتات ال Integer بمعنى اخرى تحريك او نقل البتات إلى اليسار. في المثال السابق الرقم المراد تحريك بتاته هو 1 بمقدار 3 خطوات
الرقم 1 في الباينري هو 00000001 باينري
وبعد الازاحة الاولى لليسار يصبح 00000010 باينري اي يعادل 2 عشري
ثم الازاحة الثانية 00000100 ي
| | |
| عشري | باينري |
في الاصل كان الرقم | 1 | 00000001 |
في الازاحة ليسار الاولى يصبح | 2 | 00000010 |
في الازاحة الثانية لليسار يصبح | 4 | 00000100 |
الازاحة الثالثة ليسار والاخير تكون النتيجة | 8 | 00001000 |
لاحظ الرقم الباينري كيف يتم ازاحة بتاته لليسار.
الفائدة منها وليس كلها:
- رفع الرقم إلى قوة او عمليات القسمة بسرعة.
- اختبار بت معين من الرقم .
ملاحظة مهمة استخدامها يجب ان يكون بحذر شديد واقتصر استخدامها على رفع إلى قوة والقسمة . السبب انها تعمل على مستوى البيتات فلن يكون هناك وضوح لكيفية عملها فمثلا قد يختفي البت الاخير ان لم تكن قد ضبطت احجام المتحولات بشكل سليم ولم تقم بالتاكد من ان الازاحة لن تخرج البت خارج طول المتحول . ففي المثال السابق عندما يصل البت 1 إلى النهاية النتيجة ستكون 0 .
الافضل استخدام الاوامر العادي
لمعرفة كيف يمكنك الكتابة بشكل منسق في الموقع راجع هذه المنشور https://www.easydelphi.com/forums/public/d/44-dlyl-lstkhdm