العوامل التي تستخدم للتعامل مع الـ bits (Bitwise Operators) في بايثون
إسم العامل | رمزه | مثال | شرح الكود |
---|---|---|---|
Bitwise AND | & | a & b | العامل & يحسب ناتج جمع الـ bits المشتركة بين a و b |
Bitwise OR | | | a | b | العامل | يحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين a و b |
Bitwise XOR | ^ | a ^ b | العامل ^ يحسب ناتج جمع الـ bits الغير مشتركة بين a و b |
Bitwise compliment OR | ~ | ~a | العامل ~ يقلب الـ bits التي تساوي 0 إلى 1 و يقلب الـ bits التي تساوي 1 إلى 0,ثم يضيف عليهم 1 و يحسب ناتج جمعهم, بعدها يضرب الجواب بالعامل ( - ) ثم يعطينا جواب سلبي. |
Left shift | << | a << 2 | العامل << يزيح الـ bits من آخر اليسار إلى أول اليمين.العدد 2 يعني أننا سنزيح آخر إثنين bits و نضعهم في الأول. |
Right shift | >> | a >> 2 | العامل >> يزيح الـ bits من أول اليمين إلى آخر اليسار.العدد 2 يعني أننا سنزيح أول إثنين bits و نضعهم في الأخير. |
هنا وضعنا مثال لكل عامل موجود في الجدول
أمثله على العوامل التي تستخدم للتعامل مع الـ Bits في بايثون
العامل &
(Bitwize AND)
العامل &
يحسب ناتج جمع الـ bits المشتركة بين قيمتين.
مثال
a = 10 # a = 10 = 00000000000000000000000000001010 b = 75 # 7b = 75 = 00000000000000000000000001001011 c = a & b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '&', b, '=', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits المشتركة و التي تم جمعها باللون الاصفر.
b = 75;      // 75 = 00000000000000000000000001001011
c = a & b;   //  c = 00000000000000000000000000001010
             //  c = 10
العامل |
(Bitwize OR)
العامل |
يحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين قيمتين.
مثال
a = 10 # 10 = 00000000000000000000000000001010 b = 75 # 75 = 00000000000000000000000001001011 c = a | b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '|', b, '=', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits المشتركة و الغير مشتركة و التي تم جمعها باللون الاصفر.
b = 75;      // 75 = 00000000000000000000000001001011
c = a | b;   //  c = 00000000000000000000000001001011
             //  c = 75
العامل ^
(Bitwize XOR)
العامل ^
يحسب ناتج جمع الـ bits الغير مشتركة بين قيمتين.
مثال
a = 10 # 10 = 00000000000000000000000000001010 b = 75 # 75 = 00000000000000000000000001001011 c = a ^ b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '^', b, '=', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits الغير مشتركة و التي تم جمعها باللون الاصفر.
b = 75;      // 75 = 00000000000000000000000001001011
c = a | b;   //  c = 00000000000000000000000001000001
             //  c = 65
العامل ~
(Bitwize Compliment OR)
العامل ~
يقلب الـ bits التي تساوي 0 إلى 1 و يقلب الـ bits التي تساوي 1 إلى 0.
بعدها يتم حساب الناتج باتباع مبدأ single precision floating point number.
مثال
a = 10 # 10 = 00000000000000000000000000001010 c = ~a # c = 11111111111111111111111111110111 = -11 print('~', a, '=', c)
•سنحصل على النتيجة التالية عند التشغيل.
العامل <<
(Left Shift)
العامل <<
يمسح bits من ناحية اليسار ثم يبدل كل bit تم مسحها منهم بصفر و يضعهم من ناحية اليمين.
مثال
a = 10 # 10 = 00000000000000000000000000001010 c = a << 2 # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '<< 2 =', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.
c = a << 2;   //  c = 00000000000000000000000000101000 = 40
              //  c = 40
العامل >>
(Right Shift)
العامل >>
عندها حالتين: قد يكون العدد أكبر من صفر أو أصغر من صفر.
إذا كان العدد أكبر من صفر, يمسح bits من ناحية اليمين ثم يبدل كل bit منهم بصفر و يضعهم من ناحية اليسار.
إذا كان العدد أصغر من صفر, يمسح bits من ناحية اليمين ثم يبدل كل bit منهم بواحد ليحافظ على إشارة الناقص و يضعهم من ناحية اليسار.
المثال الأول
•الحالة الأولى: إذا كان العدد أكبر من صفر.
a = 9 # 9 = 00000000000000000000000000001001 c = a >> 2 # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '>> 2 =', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.
c = a >> 2;   // c = 00000000000000000000000000000010
              // c = 2
المثال الثاني
•الحالة الثانية: إذا كان العدد أصغر من صفر.
a = -9 # -9 = 11111111111111111111111111111000 c = a >> 2 # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '>> 2 =', c)
•سنحصل على النتيجة التالية عند التشغيل.
• هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.
c = a >> 2;   //  c = 11111111111111111111111111111101
              //  c = -3