العوامل التي تستخدم للتعامل مع الـ bits ( Bitwise Operators ) في بايثون | python

العوامل التي تستخدم للتعامل مع الـ 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 في بايثون

هنا مجموعه أمثلة لكل عامل من العوامل التي تستخدم للتعامل مع الـ Bits في بايثون .

العامل & (Bitwize AND)

العامل & يحسب ناتج جمع الـ bits المشتركة بين قيمتين.

مثال

Test.py
        a = 10      # a = 10 = 00000000000000000000000000001010
        b = 75      # 7b = 75 = 00000000000000000000000001001011

        c = a & b   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '&', b, '=', c)
      

سنحصل على النتيجة التالية عند التشغيل.

10 & 75 = 10

 هنا قمنا بتعليم الـ bits المشتركة و التي تم جمعها باللون الاصفر.

a = 10; &nbsp &nbsp&nbsp // 10 = 00000000000000000000000000001010
b = 75; &nbsp &nbsp&nbsp // 75 = 00000000000000000000000001001011

c = a & b; &nbsp //&nbsp c = 00000000000000000000000000001010
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp //&nbsp c = 10


العامل | (Bitwize OR)

العامل | يحسب ناتج جمع الـ bits المشتركة و الغير مشتركة بين قيمتين.

مثال

Test.py
        a = 10      # 10 = 00000000000000000000000000001010
        b = 75      # 75 = 00000000000000000000000001001011

        c = a | b   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '|', b, '=', c)
      

سنحصل على النتيجة التالية عند التشغيل.

10 | 75 = 75

 هنا قمنا بتعليم الـ bits المشتركة و الغير مشتركة و التي تم جمعها باللون الاصفر.

a = 10; &nbsp &nbsp&nbsp // 10 = 00000000000000000000000000001010
b = 75; &nbsp &nbsp&nbsp // 75 = 00000000000000000000000001001011

c = a | b; &nbsp //&nbsp c = 00000000000000000000000001001011
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp //&nbsp c = 75


العامل ^ (Bitwize XOR)

العامل ^ يحسب ناتج جمع الـ bits الغير مشتركة بين قيمتين.

مثال

Test.py
        a = 10      # 10 = 00000000000000000000000000001010
        b = 75      # 75 = 00000000000000000000000001001011

        c = a ^ b   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '^', b, '=', c)
      

سنحصل على النتيجة التالية عند التشغيل.

10 ^ 75 = 65

 هنا قمنا بتعليم الـ bits الغير مشتركة و التي تم جمعها باللون الاصفر.

a = 10; &nbsp &nbsp&nbsp // 10 = 00000000000000000000000000001010
b = 75; &nbsp &nbsp&nbsp // 75 = 00000000000000000000000001001011

c = a | b; &nbsp //&nbsp c = 00000000000000000000000001000001
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp&nbsp //&nbsp c = 65


العامل ~ (Bitwize Compliment OR)

العامل ~ يقلب الـ bits التي تساوي 0 إلى 1 و يقلب الـ bits التي تساوي 1 إلى 0.
بعدها يتم حساب الناتج باتباع مبدأ single precision floating point number.

مثال

Test.py
        a = 10     # 10 = 00000000000000000000000000001010
        c = ~a     #  c = 11111111111111111111111111110111 = -11

        print('~', a, '=', c)
      

سنحصل على النتيجة التالية عند التشغيل.

~ 10 = -11


العامل << (Left Shift)

العامل << يمسح bits من ناحية اليسار ثم يبدل كل bit تم مسحها منهم بصفر و يضعهم من ناحية اليمين.

مثال

Test.py
        a = 10       # 10 = 00000000000000000000000000001010
        c = a << 2   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '<< 2 =', c)
      

سنحصل على النتيجة التالية عند التشغيل.

10 << 2 = 40

 هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.

a = 10; &nbsp &nbsp &nbsp // 10 = 00000000000000000000000000001010

c = a << 2; &nbsp //&nbsp c = 00000000000000000000000000101000 = 40
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp //&nbsp c = 40


العامل >> (Right Shift)

العامل >> عندها حالتين: قد يكون العدد أكبر من صفر أو أصغر من صفر.

  • إذا كان العدد أكبر من صفر, يمسح bits من ناحية اليمين ثم يبدل كل bit منهم بصفر و يضعهم من ناحية اليسار.

  • إذا كان العدد أصغر من صفر, يمسح bits من ناحية اليمين ثم يبدل كل bit منهم بواحد ليحافظ على إشارة الناقص و يضعهم من ناحية اليسار.


المثال الأول

الحالة الأولى: إذا كان العدد أكبر من صفر.

Test.py
        a = 9        # 9 = 00000000000000000000000000001001
        c = a >> 2   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '>> 2 =', c)
      

سنحصل على النتيجة التالية عند التشغيل.

9 >> 2 = 2

 هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.

a = 9; &nbsp &nbsp &nbsp&nbsp // 9 = 00000000000000000000000000001001

c = a >> 2; &nbsp // c = 00000000000000000000000000000010
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp // c = 2

المثال الثاني

الحالة الثانية: إذا كان العدد أصغر من صفر.

Test.py
        a = -9       # -9 = 11111111111111111111111111111000
        c = a >> 2   # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل

        print(a, '>> 2 =', c)
      

سنحصل على النتيجة التالية عند التشغيل.

-9 >> 2 = -3

 هنا قمنا بتعليم الـ bits التي تم مسحها باللون الاصفر و تعليم الـ bits التي تم إضافتها باللون الأزرق.

a = -9; &nbsp &nbsp &nbsp // -9 = 11111111111111111111111111110111

c = a >> 2; &nbsp //&nbsp c = 11111111111111111111111111111101
&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp //&nbsp c = -3