--- title: Bitwise Operators localeTitle: مشغلات bitwise --- `<<` ، `>>` ، `&` ، `|` و `~` و `^` هي مشغلات البتات التي تعمل على نمط بت واحد أو أكثر أو أرقام ثنائية على مستوى وحدات البت الفردية. ## و المشغل `x & y` هل "bitwise و". كل جزء من الإخراج هو 1 إذا كانت البتة المقابلة من x AND of y هي 1 ، وإلا تكون 0. ## أو المشغل `x | y` هل "bitwise أو". كل جزء من الإخراج هو 0 إذا كانت البتات المقابلة من x AND of y هي 0 ، وإلا يكون 1. ## مشغل تكملة `~ x` إرجاع مكمل x - الرقم الذي تحصل عليه عن طريق تبديل كل 1 لـ 0 و 0 لكل 1. وهذا هو نفس -x - 1. ## مشغل XOR `x ^ y` هل "البتاتيه الخالصة او". كل جزء من الخرج هو نفس البتة المقابلة في x إذا كان هذا البت في y هو 0 ، وهو مكمل البتة في x إذا كان هذا البت في y 1. ## التحول الحسابي غادر المشغل `x << y` إرجاع x مع وحدات البت التي تم نقلها إلى اليسار بواسطة أماكن y (والبتات الجديدة على الجانب الأيمن هي الأصفار). هذا هو نفس ضرب X بنسبة 2 \*\* y ، مع الحفاظ على علامة الرقم. يلقي معظم المترجمين تحذيراً عندما تتحول مع عدد> = حجم (نوع). أنت عموما ينتهي مع 0 عند القيام بذلك. ## الحساب الصحيح التحول المشغل `x >> y` تم إرجاع x مع البتات التي تم نقلها إلى اليمين من خلال أماكن y. هذا هو نفس القسمة x من 2 \*\* y لعدد صحيح غير موقعة. يحتوي الانتقال الأيمن للرقم الموقّع السلبي على سلوك محدد بالتنفيذ. يلقي معظم المترجمين تحذيراً عندما تتحول مع عدد> = حجم (نوع). قد يؤدي نقله إلى اليمين إلى ملء بتات "فارغة" باستخدام البت الأكثر أهمية (أي إجراء ملحق للتوقيع) أو قد يتحول في الأصفار اعتمادًا على النظام الأساسي و / أو المترجم. ## تحول منطقي المشغل الصحيح `x >>> y` تم إرجاع x مع البتات التي تم نقلها إلى اليمين من خلال أماكن y. على عكس التحول الحسابي ، فإن التحولات المنطقية لا تشير إلى علامة. على سبيل المثال: -2 ممثلة في 8 بتات ستكون 11111110 (لأن البت الأكثر أهمية له وزن سلبي). سيعطيك نقله بشكل صحيح واحد باستخدام الحركات الحسابية 11111111 ، أو -1. ومع ذلك ، فإن التحول الصحيح المنطقي لا يهمني أن القيمة يمكن أن تمثل رقمًا ؛ إنها ببساطة تنقل كل شيء إلى اليمين وتعبئته من اليسار باستخدام 0s. إن تحويل شريحتنا الواحدة إلى اليمين بإستخدام إزاحة منطقية سيعطي 01111111. هذا المشغل ليس موجودًا بشكل دائم بكل اللغات.