تعتبر عوامل تشغيل Bitwise ملائمة للاستخدام ويمكن أن تؤدي إلى ظهور رمز سريع. اكتشف ما هي وكيفية استخدامها.

عوامل Bitwise هي تلك التي تعمل على المستوى الثنائي. غالبًا ما تكون سريعة جدًا في التنفيذ وتعمل عادةً على عاملين.

يمكنك استخدام معاملات البت لمعالجة الأرقام الثنائية ، وتحسين التعليمات البرمجية ، وضغط البيانات ، وتنفيذ تقنيات الرسومات أو برمجة الألعاب. مثل معظم لغات البرمجة الأخرى ، تتمتع JavaScript بدعم ممتاز لعمليات البت.

من هم المشغلون؟

تستخدم معظم لغات البرمجة مفهوم "المشغل" —رمز يخبر المترجم الفوري بتنفيذ عملية حسابية أو علائقية أو منطقية محددة.

هناك العديد من أنواع مختلفة من مشغل جافا سكريبت يجب أن تكون على دراية ، من تلك التي تبدو مثل معاملات الرياضيات القياسية ، مثل "+" ، إلى عوامل التشغيل التي تقارن بين قيمتين. معاملات Bitwise هي مجموعة خاصة تتعامل مع الأرقام الثنائية.

عامل تشغيل Bitwise AND (&)

جافا سكريبت أحادي المعامل AND (&) عامل التشغيل يقارن البتات المقابلة من اثنين المعاملات الثنائية - الأرقام التي تحتوي على 0 و 1 فقط. لكل زوج من بتات الإدخال ، تكون بتة الإخراج المقابلة "1" إذا كانت كلتا بتات الإدخال "1" أو "0" بخلاف ذلك.

instagram viewer

إليك بنية عامل التشغيل "AND" أحاديًا:

أ & ب

في هذا المثال، أ و ب هي المعاملات التي تقوم بتنفيذ عملية البت فيها.

إليك كيفية عمل عامل التشغيل "AND" على مستوى أحادي المعامل:

  1. تنطبق العملية AND على كل زوج من البتات المقابلة في أ و ب من اليمين إلى اليسار.
  2. إذا كانت كلتا البتتين 1 ، تكون النتيجة 1. إذا كانت أي من البتة تساوي 0 ، تكون النتيجة 0.
  3. والنتيجة هي رقم جديد حيث يمثل كل بت نتيجة العملية AND على البتات المقابلة لـ أ و ب.

على سبيل المثال:

يترك أ = 50; // 00110010
يترك ب = 100; // 01100100

يترك النتيجة = أ & ب ؛ // 00100000

وحدة التحكم.log (نتيجة) ؛ // 32

في المثال أعلاه ، أ هي 50 في النظام العشري ، أي ما يعادل الرقم الثنائي 00110010 ، و ب 100 في النظام العشري ، أي ما يعادل الرقم الثنائي 01100100. يقارن عامل التشغيل AND كل زوج من البتات المقابلة من اليمين إلى اليسار وينتج الرقم الثنائي الناتج 00100000 ، وهو 32 في النظام العشري.

عامل تشغيل Bitwise OR (|)

أحادي المعامل OR (|) يقارن عامل التشغيل البتات المقابلة لمعاملين ويعيد "1" إذا كانت أي من البتتين أو كلاهما "1" و "0" إذا كانت كلتا البتتين "0".

في ما يلي بنية المعامل OR أحاديًا:

أ | ب

أين أ و ب هي معاملات العملية.

يعمل عامل تشغيل أحادي المعامل OR (|) بنفس طريقة عامل التشغيل AND على مستوى البت. الاختلاف الوحيد هو أن عامل التشغيل OR يُرجع "1" إذا كان "أي" من البتتين "1" و "0" إذا كان "كلاهما" بت "0".

على سبيل المثال:

يترك أ = 50; // 00110010
يترك ب = 100; // 01100100

يترك النتيجة = أ | ب؛ // 01110110

وحدة التحكم.log (نتيجة) ؛ // 118

في المثال أعلاه ، يقارن عامل التشغيل "أو" أحاديًا كل زوج من البتات من اليمين إلى اليسار (على سبيل المثال ، 0 | 0 = 0, 0 | 1 = 1, 1 | 1 = 1، وما إلى ذلك وهلم جرا). الرقم الثنائي الناتج هو 01110110 ، وهو 118 في النظام العشري.

عامل تشغيل Bitwise XOR (^)

XOR أحادي المعامل (^) يقارن عامل التشغيل البتات المقابلة لمعاملين ويعيد "1" إذا كان أي منهما وليس كلاهما "1" و "0" إذا كان كلا المعاملين "1" أو "0".

إليك صيغة عامل تشغيل XOR على مستوى أحادي:

أ ^ ب

أين أ و ب هي معاملات العملية.

يعمل عامل تشغيل bitwise XOR بالطريقة نفسها التي يعمل بها العاملان "OR" و "AND". الاختلاف الوحيد هو أنه يعرض "1" إذا كان "أحدهما وليس كلاهما" من المعاملين هو "1" و "0" إذا كان "كلاهما" من المعاملين "1" أو "0".

على سبيل المثال:

يترك أ = 50; // 00110010
يترك ب = 100; // 01100100

يترك النتيجة = أ ^ ب ؛ // 01010110

وحدة التحكم.log (نتيجة) ؛ // 86

في المثال أعلاه ، يقارن عامل تشغيل XOR كل زوج من البتات من اليمين إلى اليسار (على سبيل المثال ، 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 1 = 0، وما إلى ذلك وهلم جرا). الرقم الثنائي الناتج هو 01010110 ، وهو 86 في النظام العشري.

عامل Bitwise NOT (~)

أحادي المعامل NOT (~) هو عامل تشغيل أحادي يعمل على عدد صحيح واحد عن طريق عكس جميع وحدات البت الخاصة به. بمعنى آخر ، فإنه يغير كل "0" بت إلى "1" وكل بت "1" إلى "0".

فيما يلي بناء جملة المعامل NOT أحاديًا:

~ ج

أين ج هو المعامل.

يعمل عامل تشغيل bitwise NOT عن طريق عكس جميع وحدات بتات المعامل ، بما في ذلك بتات الإشارة.

على سبيل المثال:

يترك ج = 10; // 00001010
يترك د = -10; // 11110110

وحدة التحكم.log (~ c) ؛ // 11110101
وحدة التحكم.log (~ d) ؛ // 00001001

في المثال أعلاه ، يقوم عامل التشغيل NOT بعكس جميع وحدات البت (على سبيل المثال ، 01, 10، إلخ) ، بما في ذلك بتات الإشارة.

عامل النقل الأيسر (<

يقوم عامل النقل الأيسر بإزاحة بتات رقم معين إلى اليسار. يأخذ المشغل معاملين: الرقم المراد إزاحته وعدد البتات المراد إزاحته بواسطته.

فيما يلي بناء الجملة لعامل النقل الأيسر:

أ << ب

أين أ هو المعامل لعامل النقل الأيسر ، و ب هو عدد البتات التي سيغير المشغل المعامل بها.

يعمل عامل النقل الأيسر عن طريق إزاحة كل جزء من المعامل إلى اليسار بعدد محدد من المواضع والتخلص من البتات الزائدة التي تم إزاحتها إلى اليسار.

على سبيل المثال:

يترك أ = 50; // 00110010
يترك ب = 2;

يترك النتيجة = أ << ب ؛ // 11001000

وحدة التحكم.log (نتيجة) ؛ // 200

في المثال أعلاه ، قام عامل النقل الأيسر بإزاحة العلامة العشرية 50 للثنائي 00110010 بمقدار منزلين. القيمة الثنائية الناتجة هي 11001000 ، وهي 200 كرقم عشري.

عامل تشغيل التحول الأيمن (>>) لنشر الإشارات

التحول الصحيح لنشر الإشارات (>>) ينقل بتات الرقم إلى اليمين مع الاحتفاظ بعلامة الرقم الأصلي. يأخذ المشغل معاملين: الرقم المراد إزاحته وعدد البتات المراد إزاحته بواسطته.

إليك بنية عامل النقل الأيمن لنشر الإشارات:

أ >> ب

أين أ هو المعامل لعامل النقل الصحيح ، و ب هو عدد البتات التي سيغير المشغل المعامل بها.

يعمل مشغل النقل الأيمن لنشر الإشارات بشكل مشابه لعامل النقل الأيسر ؛ الاختلاف الوحيد في طريقة التشغيل هو أن التحول الصحيح يحافظ على العلامة.

على سبيل المثال:

يترك أ = -50; // 11001110
يترك ب = 2;

يترك النتيجة = أ >> ب ؛ // 11110011

وحدة التحكم.log (نتيجة) ؛ // -13

في المثال أعلاه ، قام عامل النقل الأيمن بإزاحة العلامة العشرية -50 (11001110) مسافتين إلى اليمين مما أدى إلى العلامة العشرية -13 (11110011).

عامل النقل الأيمن غير الموقعة (>>>)

التحول الصحيح غير الموقعة (>>>) يقوم عامل التشغيل بإزاحة بتات الرقم إلى اليمين بعدد محدد من المواضع ويملأ الفراغات على اليسار بالأصفار. يتجاهل المشغل البتات الزائدة التي ينقلها إلى اليمين.

في ما يلي بناء الجملة لعامل النقل الأيمن غير الموقعة:

أ >>> ب

أين أ هو المعامل لعامل النقل الصحيح ، و ب هو عدد البتات التي سيغير المشغل المعامل بها.

يعمل مشغل النقل الأيمن غير الموقعة بشكل مشابه للنوبة الصحيحة. ومع ذلك ، على عكس عامل النقل الصحيح (>>) ، لا تحتفظ بعلامة الرقم عند التبديل. بدلاً من ذلك ، يتعامل مع الرقم باعتباره عددًا صحيحًا بدون إشارة ويملأ الجزء الأيسر بصفر.

على سبيل المثال:

يترك أ = -5; // 11111111 11111111 11111111 11111011
يترك ب = 2;

يترك النتيجة = >>> ب ؛ // 00111111 11111111 11111111 11111110

وحدة التحكم.log (نتيجة) ؛ // 1073741822

في هذا المثال ، قام عامل النقل الأيمن غير الموقعة بإزاحة مسافتين "-5" إلى اليمين ، مما أدى إلى إزالة العلامة بشكل فعال ، مما أدى إلى ظهور العلامة العشرية "1073741822".

تطبيقات معاملات Bitwise

من خلال معالجة البتات الفردية في الأرقام الثنائية ، يمكن لمشغلي البتات إنشاء وظائف معقدة يصعب أو يستحيل تحقيقها باستخدام العمليات الحسابية التقليدية.

يمكن أن يساعدك فهم كيفية استخدام عوامل تشغيل bitwise في إنشاء تطبيقات ويب أكثر كفاءة وأداءً.