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