اذا كنت تسأل عن طريقة الاستخدام فتوجد دروس كثيرة متوفرة عن الـ bitwise operators
ولكن ان سألت في ماذا نستفيد منهم ، فهذا كلام اخر .. اساسا هذه عمليات قديمة فالان نحن لدينا السي شارب
ومكتبات الدوت نت عالية المستوى التي توفر دوال جاهزة لكل شيئ ، فتقريبا نادرا مانستخدام هذه العمليات
وان اُستخدمت ، سيكون لغرض زيادة سرعة التطبيق لان بعض الدوال تاخذ وقت في تنفيذها.
كما هو الحال في الـ Pointers في السي شارب ، نادرا مايستخدم بسبب ان له بدائل اسهل واكثر امانا مثل IntPtr
وحتى الـ
Shift Operators كان يستخدم لعمل power لرقم معين ولكن الدوت نت توفر دالة جاهزة (Math.pow) .
--
فعليا لم استخدم هذه المعاملات الا في حالة الـ
Flags وفعلا وجدتها مفيدة :-
اولا قمت بانشاء Enum :
PHP كود :
[Flags]
public enum Position
{
Down = 1,
Top = 2,
Left = 4,
Right = 8
}
الان لو حبيت استخدم الـ enum ، بالطبع جميعا نعرف كيف نستخدمه
PHP كود :
circule.Pos = Position.Down
ولكن ماذا لو اردت ان ان اضع الدائرة في الزاوية السفلى على اليسار ؟
بما اننا استعملنا الـ flags ، فيمكننا القيام بالتالي
:
PHP كود :
circule.Pos = Position.Down | Position.Left
وفي كود خاصية Pos يوجد الكود التالي الذي يحدد محتوى الخاصية Pos
PHP كود :
if((pos & Position.Top) == Position.Top)
{
// pos has Top
}
if((pos & Position.Left) == Position.Left)
{
// pos has Left
}
في الكود السابق سيتم الدخول في كلا الشرطين بسبب اننا ارسلنا للخاصية Position.Down | Position.Left
--
وهذا بالضبط مبدأ عمل الخاصية المشهورة Anchor
PHP كود :
button1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
رغم ذلك يوجد اسلوب اخر بديل عن هذا ، ولكن هذا اسلوب سريع وجيد نوعا ما
هذه الحالة الوحيدة التي استفدت منها من الbitwise operator
--
لمزيد من المعلومات :
http://stackoverflow.com/questions/38833...operations