منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] ما هى فائدة Bitwise Operator و ال Shift Operators - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [سؤال] ما هى فائدة Bitwise Operator و ال Shift Operators (/showthread.php?tid=17425)



ما هى فائدة Bitwise Operator و ال Shift Operators - نور الدين وليد - 23-09-16

السلام عليكم ورحمة الله
حياكم الله  Smile

أريد معرفة ماهى فائدة ال Bitwise Operators التى تعمل على البتات أنا أعرف كيف تعمل ولكن أريد معرفة فائدتها ومتى أحتاجها؟ 

أيضا هناك Shift Operator وهذه أنا لم أفهم منها شيئا  Big Grin  ولا أعرف كيف تستخدم لذا أرجو المساعدة فى شرحها .

وجزاكم الله خيرا ....... Smile


RE: ما هى فائدة Bitwise Operator و ال Shift Operators - عبد الكريم كنعان - 01-01-17

(23-09-16, 10:20 PM)نور الدين وليد كتب : السلام عليكم ورحمة الله
حياكم الله  Smile

أريد معرفة ماهى فائدة ال Bitwise Operators التى تعمل على البتات أنا أعرف كيف تعمل ولكن أريد معرفة فائدتها ومتى أحتاجها؟ 

أيضا هناك Shift Operator وهذه أنا لم أفهم منها شيئا  Big Grin  ولا أعرف كيف تستخدم لذا أرجو المساعدة فى شرحها .

وجزاكم الله خيرا ....... Smile

وعليكم السلام ورحمة الله وبركاته

هذا شرح من مايكروسوفت مع مثال على Shift Operators 
https://msdn.microsoft.com/en-us/library/a1sway8w.aspx

اذا تبحث عن شرح بالعربي ممكن تبحث عن شرح باستخدام لغة السي بلس بلس ، نفس المفهوم

أما عن أهميتهما في الحياة العملية، ليس عندي مثال واقعي ولكن أعتقد ممكن تكون مفيدة للتطبيقات التي تتصل مع الأجهزة الإلكترونية باستخدام Micro .NET Framework


RE: ما هى فائدة Bitwise Operator و ال Shift Operators - الشاكي لله - 01-01-17

اذا كنت تسأل عن طريقة الاستخدام فتوجد دروس كثيرة متوفرة عن الـ 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 ، فيمكننا القيام بالتالي Smile :

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/3883384/practical-applications-of-bitwise-operations