Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

بايثونالعوامل التي تستخدم للتعامل مع البتات

  • العامل & (Bitwize AND)
  • العامل | (Bitwize OR)
  • العامل ^ (Bitwize XOR)
  • العامل ~ (Bitwize Compliment OR)
  • العامل << (Left Shift)
  • العامل >> (Right Shift)

العامل & (Bitwize AND)

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

مثال

Test.py
a = 10 # a = 10 = 00000000000000000000000000001010
b = 75 # 7b = 75 = 00000000000000000000000001001011
c = a & b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل
print(a, '&', b, '=', c)
a = 10 # a = 10 = 00000000000000000000000000001010 b = 75 # 7b = 75 = 00000000000000000000000001001011 c = a & b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '&', b, '=', c)

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

10 & 75 = 10

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

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

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


العامل | (Bitwize OR)

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

مثال

Test.py
a = 10 # 10 = 00000000000000000000000000001010
b = 75 # 75 = 00000000000000000000000001001011
c = a | b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل
print(a, '|', b, '=', c)
a = 10 # 10 = 00000000000000000000000000001010 b = 75 # 75 = 00000000000000000000000001001011 c = a | b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '|', b, '=', c)

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

10 | 75 = 75

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

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

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


العامل ^ (Bitwize XOR)

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

مثال

Test.py
a = 10 # 10 = 00000000000000000000000000001010
b = 75 # 75 = 00000000000000000000000001001011
c = a ^ b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل
print(a, '^', b, '=', c)
a = 10 # 10 = 00000000000000000000000000001010 b = 75 # 75 = 00000000000000000000000001001011 c = a ^ b # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '^', b, '=', c)

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

10 ^ 75 = 65

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

a = 10;      // 10 = 00000000000000000000000000001010
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.

مثال

Test.py
a = 10 # 10 = 00000000000000000000000000001010
c = ~a # c = 11111111111111111111111111110111 = -11
print('~', a, '=', c)
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)
a = 10 # 10 = 00000000000000000000000000001010 c = a << 2 # شرحنا كيف سيتم الحصول على الناتج تحت نتيجة التشغيل print(a, '<< 2 =', c)

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

10 << 2 = 40

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

a = 10;       // 10 = 00000000000000000000000000001010

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


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

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

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

المثال الأول

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

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

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

9 >> 2 = 2

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

a = 9;        // 9 = 00000000000000000000000000001001

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

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

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

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

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

-9 >> 2 = -3

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

a = -9;       // -9 = 11111111111111111111111111110111

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