السلام عليكم ورحمة الله
حياكم الله
أريد معرفة ماهى فائدة ال Bitwise Operators التى تعمل على البتات أنا أعرف كيف تعمل ولكن أريد معرفة فائدتها ومتى أحتاجها؟
أيضا هناك Shift Operator وهذه أنا لم أفهم منها شيئا
ولا أعرف كيف تستخدم لذا أرجو المساعدة فى شرحها .
وجزاكم الله خيرا .......
(23-09-16, 10:20 PM)نور الدين وليد كتب : [ -> ]السلام عليكم ورحمة الله
حياكم الله
أريد معرفة ماهى فائدة ال Bitwise Operators التى تعمل على البتات أنا أعرف كيف تعمل ولكن أريد معرفة فائدتها ومتى أحتاجها؟
أيضا هناك Shift Operator وهذه أنا لم أفهم منها شيئا ولا أعرف كيف تستخدم لذا أرجو المساعدة فى شرحها .
وجزاكم الله خيرا .......
وعليكم السلام ورحمة الله وبركاته
هذا شرح من مايكروسوفت مع مثال على Shift Operators
https://msdn.microsoft.com/en-us/library/a1sway8w.aspx
اذا تبحث عن شرح بالعربي ممكن تبحث عن شرح باستخدام لغة السي بلس بلس ، نفس المفهوم
أما عن أهميتهما في الحياة العملية، ليس عندي مثال واقعي ولكن أعتقد ممكن تكون مفيدة للتطبيقات التي تتصل مع الأجهزة الإلكترونية باستخدام Micro .NET Framework
اذا كنت تسأل عن طريقة الاستخدام فتوجد دروس كثيرة متوفرة عن الـ 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