عامل Bitwise في برمجة C & C ++

نشرت: 2022-12-09

في ذاكرة الوصول العشوائي ، يتم تنظيم البيانات كتسلسل من البايت. يحتوي كل بايت على ثماني بتات متتالية. تُعد معاملات C & C ++ bitwise مفيدة عندما تريد إجراء بعض العمليات الحسابية على أجزاء من البيانات. فهي أسرع وتُستخدم أحيانًا لتعزيز كفاءة البرنامج. إنهم يعملون على خوارزميات Bitwise التي تؤدي عمليات على مستوى البت أو تتعامل مع البتات بطرق مختلفة.

أنواع معاملات Bitwise في C & C ++:

  1. أحادي المعامل AND
  2. أحادي المعامل OR
  3. أحادي المعامل لا
  4. حصري Bitwise-Or (XOR)
  5. مشغل المناوبة اليسرى
  6. عامل التحول الأيمن

دعنا ندخل في تفاصيل كل منهم:

جدول المحتويات

1. أحادي المعامل AND:

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

مثال:

افترض أن التمثيل الثنائي لرقمين أ و ب هو:

أ = 01011000

ب = 10111001

إذن ، a & b = 00011000

كما يتضح من المثال أعلاه ، تظهر النتيجة "1" فقط في تلك الأماكن حيث يكون كلا الرقمين أ و ب 1. بالنسبة لجميع الأماكن الأخرى ، تظهر النتيجة "0".

2. على مستوى البت أو:

في C & C ++ ، يعمل Bitwise OR بشكل مشابه تمامًا لـ bitwise AND. الاختلاف الوحيد هو أنه في المعامل OR ، لكي يكون موضع البت "1" في النتيجة ، يجب أن يكون واحد فقط من البتتين هو "1". يأخذ هذا المشغل رقمين كمعاملين وينفذ OR على كل جزء من الرقمين.

يعمل بالطريقة التالية:

  • إذا كانت كلتا البتتين "1" ، تكون النتيجة "1".
  • إذا كانت كلتا البتتين "0" ، تكون النتيجة "0".
  • إذا كان أي من البتات هو "1" ، تكون النتيجة "1".

إنها واحدة من أبسط مشغلات C ++ وأكثرها استخدامًا . رمزها هو الأنبوب |. علاوة على ذلك ، فهو مطابق للعامل المنطقي المنطقي ||.

مثال:

افترض التمثيل الثنائي لرقمين أ | ب هو:

أ = 01101001

ب = 10111000

إذن ، أ | ب = 11111001

3. على مستوى البت لا:

المعروف أيضًا باسم عامل Bitwise NOT ، فإنه يقلب كل بت في النتيجة. رمزها هو التلدة (~). من الطرق السهلة لتذكر عمل هذا المشغل هو أن التلدة تُعرف أحيانًا باسم twiddle ، وأن تكملة البتات تكملة كل بت. هذا يعني أنه إذا كان لديك 1 ، فستكون النتيجة 0 والعكس صحيح. بعبارة أخرى ، يأخذ عامل التشغيل أحادي المعامل هذا في C & C ++ رقمًا واحدًا ويعكس جميع البتات.

عند تحديد أكبر قيمة ممكنة لأي رقم غير موقعة ، يعد هذا أحد أكثر عوامل تشغيل لغة C ++ استخدامًا .

مثال:

عدد عدد صحيح غير موقعة = ~ 0 ؛

هنا ، تعني القيمة 0 جميع 0s: 00000000. لذا ، فإن تنفيذ عامل Bitwise NOT يعطي النتيجة كـ 1s: 11111111. نظرًا لأن num هو int غير موقعة ، فلا داعي للقلق بشأن بتات الإشارة أو تكملة اثنين. 1s هو أكبر رقم ممكن في النتيجة.

إحدى الخصائص الحاسمة لمشغل Bitwise NOT هي تكملة 2. مكمل 2 لرقم يساوي تكملة هذا الرقم زائد 1.

مثال:

أ = 00000000

إذن ، مكمل 2 = - (11111111 + 1) = -00000000 = -0 (عشري)

ملاحظة: تكملة البتات لأي عدد N يساوي - (N + 1).

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

4. حصري على مستوى البت- OR (XOR):

تقبل عملية Exclusive-OR مدخلين ومخرجات 1 إذا كان أحدهما أو الآخر هو 1. ولكن النتيجة هي 0 إذا كان كلاهما 1. إذا كان كلا المدخلين 0 أو كلاهما 1 ، تكون النتيجة 0. النتيجة من XOR هو 1 فقط إذا كانت البتتان مختلفتان. رمز هذا المشغل الثنائي في C & C ++ هو علامة الإقحام (^). علاوة على ذلك ، يتم اختصار هذا العامل أحادي المعامل في C & C ++ إلى XOR. ينفذ العملية الحصرية- OR على كل زوج من البتات. من الضروري ملاحظة أنه لا يوجد نظير عامل منطقي لهذا المشغل.

مثال:

افترض أن لدينا رقمين مثل

أ = 10101010

ب = 01110010

الآن a ^ b = 10101010 ^ 01110010 = 11011000

يمكنك فهم XOR بالطريقة التالية. لنفترض أن لديك بعض الشيء ، إما 0 أو 1 ، الذي تتصل به A. الآن عندما تأخذ A XOR 0 ، ستحصل على A مرة أخرى. لذا ، إذا كانت A تساوي 1 ، فستحصل على 1 ، والعكس صحيح. عندما تأخذ A XOR 1 ، فهذا يعني أنك تقلب A. لذا ، إذا كانت A تساوي 1 ، فستحصل على 0 والعكس صحيح.

إذا قمت بتنفيذ عملية Bitwise XOR مرتين ، أي لديك بتتان ، A و B ، وقمت بتعيين C = A XOR B ، ثم نفذت C XOR B. في هذه الحالة ، تكون النتيجة التي تحصل عليها هي A XOR B XOR C. إما أن يقلب كل جزء من A مرتين أو لا يقلب أي جزء. ومن ثم ، يمكنك ببساطة استعادة الحرف A كما هو.

يمكنك اعتبار عملية XOR الثنائية نوعًا من الأدوات الانتقائية. إذا قمت بتطبيق XOR على رقمين ، أحدهما عبارة عن 1s ، فإن النتيجة تعادل قطعة صغيرة.

5. مشغل التحول الأيسر:

يعمل عامل البت هذا على إزاحة جميع وحدات البت إلى اليسار بعدد معين من البتات المحددة. يتم ملء مواضع البت التي أفرغها عامل النقل الأيسر بـ 0. رمزها هو <<.

في C أو C ++ ، تعمل بحيث تأخذ أولاً رقمين ، وتزاحة بتات المعامل الأول لليسار ، ويشير المعامل الثاني إلى عدد الأماكن لإزاحة الرقم.

بناء الجملة:

أ << = 5

فيما يلي مثال لبرنامج C / C ++ لتنفيذ عامل النقل الأيسر:

انت مين()

{

كثافة العمليات أ = 5 ؛

أ << = 2 ؛

عدد << "x:" << x << endl؛

}

الإخراج: أ = 20

الدورات والمقالات الشعبية في هندسة البرمجيات

البرامج الشعبية
برنامج PG التنفيذي في تطوير البرمجيات - IIIT ب برنامج شهادة Blockchain - PURDUE برنامج شهادة الأمن السيبراني - PURDUE ماجستير في علوم الكمبيوتر - IIIT ب
مقالات شعبية أخرى
راتب Cloud Engineer في الولايات المتحدة 2021-22 راتب AWS Solution Architect في الولايات المتحدة راتب المطور الخلفي في الولايات المتحدة راتب المطور الأمامي في الولايات المتحدة
راتب مطور الويب في الولايات المتحدة الأمريكية أسئلة مقابلة Scrum Master في عام 2022 كيف تبدأ مهنة في الأمن السيبراني في عام 2022؟ الخيارات المهنية في الولايات المتحدة لطلاب الهندسة

6. مشغل التحول الأيمن:

يعمل عامل البت هذا على إزاحة جميع وحدات البت إلى اليمين بعدد معين من البتات المحددة. رمزها >>. في C أو C ++ ، يأخذ هذا العامل أولاً رقمين ، ويغير لليمين بتات المعامل الأول ، ويحدد المعامل الثاني مقدار التحول على الرقم.

بناء الجملة:

أ >> = 5

مثال لبرنامج C / C ++ لتنفيذ مشغل التحول الصحيح:

انت مين() {

كثافة العمليات أ = 5 ؛

أ >> = 2 ؛

عدد << "x:" << x << endl؛

}

الإخراج: أ = 1

الدورات والمقالات الشعبية في هندسة البرمجيات

البرامج الشعبية
برنامج PG التنفيذي في تطوير البرمجيات - IIIT ب برنامج شهادة Blockchain - PURDUE برنامج شهادة الأمن السيبراني - PURDUE ماجستير في علوم الكمبيوتر - IIIT ب
مقالات شعبية أخرى
راتب Cloud Engineer في الولايات المتحدة 2021-22 راتب AWS Solution Architect في الولايات المتحدة راتب المطور الخلفي في الولايات المتحدة راتب المطور الأمامي في الولايات المتحدة
راتب مطور الويب في الولايات المتحدة الأمريكية أسئلة مقابلة Scrum Master في عام 2022 كيف تبدأ مهنة في الأمن السيبراني في عام 2022؟ الخيارات المهنية في الولايات المتحدة لطلاب الهندسة

متى يجب استخدام معاملات أحاديات المعالجة في C & C ++؟

  • يوفر مساحة:

تساعد عوامل تشغيل Bitwise في توفير المساحة. إحدى المشكلات الشائعة التي تواجهك عند العمل على مستوى البتات الفردية هي أنك إذا كنت تريد مساحة أكبر أو لتوفير الوقت ، فقد تضطر إلى إعادة تصميم الأجزاء الضخمة من برنامجك. لكن استخدام عوامل تشغيل البت في C & C ++ يمكن أن يقضي على التبعيات ؛ على سبيل المثال ، يمكنك استخدام ~ 0 للحصول على أكبر عدد صحيح ممكن. إن إزاحة البتات للمضاعفة في اثنين هي عملية نموذجية. وبالتالي ، فإنه لا يؤثر على قابلية القراءة ، على عكس الاستخدام المتقدم لمعالجة البتات التي يمكن أن تؤثر في بعض الحالات.

  • التشفير:

إذا كنت تعمل على نوع من التشفير أو على نظام يحتاج إلى استخدام حقول بت لتخزين السمات المنطقية.

حقائق فريدة عن معاملات أحاديه

  • إن OR على مستوى البت لرقمين هو ببساطة مجموع هذه الأرقام إذا لم يكن هناك حمل. وإلا ، فأنت تحتاج ببساطة إلى إضافة حرف AND الخاص بهم. على سبيل المثال ، افترض أن x = 5 (101) و y = 2 (010). نظرًا لعدم وجود عملية ترحيل متضمنة ، يكون المجموع ببساطة x | y. ولكن ، إذا غيرنا الآن 'x' إلى 6 (110) ، فسيتغير المجموع إلى x | y + x & y لأن عملية النقل متضمنة الآن.
  • يعتبر عامل تشغيل bitwise XOR هو الأكثر قيمة من وجهة نظر المقابلة الفنية. نناقش هنا مثالاً على إحدى مشاكل المقابلة المتعلقة بهذا الموضوع. "بالنسبة لمجموعة الأرقام المحددة التي تتكون من جميع العناصر التي تحدث لعدد زوجي من المرات باستثناء رقم واحد ، اكتشف العدد الفردي المتكرر." تحتاج إلى عمل XOR لجميع الأرقام لحل هذه المشكلة.
  • يجب عدم استخدام عوامل إزاحة اليمين واليسار على مستوى أحادي للأرقام السالبة. المعامل الثاني ، الذي يحدد عدد التحولات ، يحتوي على رقم سالب ، مما يؤدي إلى سلوك غير محدد في C & C ++. على سبيل المثال ، نتائج كل من 1 >> - 1 و 1 << -1 غير محددة.
  • السلوك غير محدد إذا تجاوز إزاحة الرقم سعة العدد الصحيح. على سبيل المثال ، 1 << 65 غير محدد إذا تم تخزين الأعداد الصحيحة بتنسيق 64 بت.
  • لا تحدث أي عملية إزاحة إذا كان المعامل الثاني (الذي يحدد عدد الورديات) يساوي 0.

ابدأ رحلة علوم الكمبيوتر مع UpGrad:

إذا كنت تهدف إلى التعرف بالتفصيل على تطوير الواجهة الأمامية (JavaScript و HTML و CSS) والخلفية (NoSQL-MongoDB) والخدمات المصغرة ، فيمكنك متابعة دورة UpGrad's Master of Science in Computer Science . هذه الدورة التي تقدمها IIIT Bangalore و LJMU Alumni Status ، تساعدك على الوصول إلى حياتك المهنية كمهندس برمجيات / مطور متكامل مع عمالقة التكنولوجيا في جميع أنحاء العالم.

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

ما فائدة معاملات أحاديات المعالجة في لغة ++ C؟

في لغة ++ C ، يقوم مشغلو البتات بتنفيذ عمليات على بيانات عدد صحيح على المستوى الثنائي. تعمل على أنماط البت التي تتضمن معالجة البتات الفردية. لذلك ، تُعرف العملية الأحادية أيضًا باسم البرمجة على مستوى البت. تُستخدم معاملات Bitwise في C ++ بشكل أساسي لإجراء عمليات حسابية أسرع نظرًا لأنها تعمل على رقمين فقط ، أي 0 و 1. يمكن لهؤلاء المشغلين أيضًا إجراء اختبار وتحويل البتات الفعلية.

هل يمكنك استخدام عاملي النقل الأيسر والأيمن معًا في رمز؟

نعم ، يمكنك الجمع بين عوامل الإزاحة لليسار واليمين ، وبعد ذلك يمكنك استخراج البيانات من تعبير عدد صحيح.

هل المشغل التكميلي يقلب التسلسل الكامل للشفرة؟

لا ، لا. تقلب الآحاد والأصفار. لذا ، فإن كل 1s تصبح 0s والعكس صحيح.

لماذا الاسم الآخر لمشغل مكمل Bitwise هو المشغل التكميلي؟

والسبب هو أنه يتطلب دائمًا معاملًا أو قيمة واحدة فقط. إنه عامل أحادي. عندما تقوم بتنفيذ مكمل على أي بت ، فإن كل الأصفار تصبح 1s والعكس صحيح. على سبيل المثال ، إذا كان لديك تعبير عدد صحيح بالقيمة 1111 0000. بعد تنفيذ عملية تكملة البت ، تصبح القيمة 0000 1111.