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

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

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

العامل & (Bitwize AND Operator)

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

مثال

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

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

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

النتيجة

10 & 75 = 10

هنا قمنا بتعليم البتات المشتركة بين المتغيرين a و b و حتى تلاحظ كيف تم حساب ناتجهم في المتغير c.

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

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

العامل | (Bitwize OR Operator)

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

مثال

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

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

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

النتيجة

10 | 75 = 75

هنا قمنا بتعليم البتات المشتركة و الغير مشتركة بين المتغيرين a و b حتى تلاحظ كيف تم حساب ناتجهم في المتغير c.

a = 10      // 10 = 00000000000000000000000000001010
b = 75      // 75 = 00000000000000000000000001001011
c = a | b   //  c = 00000000000000000000000001001011 = 75

العامل ^ (Bitwize XOR Operator)

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

مثال

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

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

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

النتيجة

10 ^ 75 = 65

هنا قمنا بتعليم البتات الغير مشتركة بين المتغيرين a و b حتى تلاحظ كيف تم حساب ناتجهم في المتغير c.

a = 10      // 10 = 00000000000000000000000000001010
b = 75      // 75 = 00000000000000000000000001001011
c = a ^ b   //  c = 00000000000000000000000001000001 = 65

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

العامل ~ يقلب البتات التي تساوي 0 إلى 1 و يقلب <البتات التي تساوي 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 Operator)

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

مثال

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

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

النتيجة

10 << 2 = 40

هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.

a = 10       // 10 = 00000000000000000000000000001010
b = a << 2   //  b = 00000000000000000000000000101000 = 40

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

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

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

في المثال التالي سنفترض أن العدد أكبر من صفر.

المثال الأول

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

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

النتيجة

9 >> 2 = 2

هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.

a = 9        // 9 = 00000000000000000000000000001001
b = a >> 2   // b = 00000000000000000000000000000010 = 2

في المثال التالي سنفترض أن العدد أصغر من صفر.

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

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

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

النتيجة

-9 >> 2 = -3

هنا قمنا بتعليم البتات التي تم مسحها جهة اليسار و من ثم البتات التي تم إضافتها من جهة اليمين.

a = -9       // -9 = 11111111111111111111111111110111
b = a >> 2   //  b = 11111111111111111111111111111101 = -3