عوامل التشغيل الثنائية في Python تستخدم لأداء الحسابات الثنائية على الأعداد الصحيحة. يتم تحويل الأعداد الصحيحة إلى تنسيق ثنائي ثم يتم أداء العمليات بت بت، ومن هنا جاءت تسمية عوامل التشغيل الثنائية. تعمل عوامل التشغيل الثنائية في Python على الأعداد الصحيحة فقط ويتم إرجاع الناتج النهائي بتنسيق عشري. يُطلق أيضًا على عوامل التشغيل الثنائية في Python اسم “العوامل التشغيل الثنائية”.
عوامل التشغيل الثنائية في Python
هناك 6 عوامل تشغيل ثنائية في Python. يقدم الجدول أدناه تفاصيل مختصرة حولها.
Bitwise Operator | Description | Simple Example |
---|---|---|
& | Bitwise AND Operator | 10 & 7 = 2 |
Bitwise OR Operator | ||
^ | Bitwise XOR Operator | 10 ^ 7 = 13 |
~ | Bitwise Ones’ Compliment Operator | ~10 = -11 |
<< | Bitwise Left Shift operator | 10<<2 = 40 |
>> | Bitwise Right Shift Operator | 10>>1 = 5 |
دعنا نلقي نظرة على هذه العوامل تلو الأخرى ونفهم كيفية عملها.
1. عامل التشغيل الثنائي “و”
يُرجع عامل التشغيل الثنائي “و” في Python القيمة 1 إذا كانت كلتا البتات تساوي 1، وإلا فإنه يُرجع القيمة 0.
>>> 10&7
2
>>>

2. عامل التشغيل الثنائي “أو”
يُرجع عامل التشغيل الثنائي “أو” في Python القيمة 1 إذا كان أيًا من البتات يساوي 1. إذا كانت كلتا البتات تساويان 0، فإنه يُرجع القيمة 0.
>>> 10|7
15
>>>

3. المشغل XOR الثنائي
يُرجى العلم أن المشغل XOR الثنائي في Python يُرجع قيمة 1 إذا كان أحد البتات هو 0 والبت الآخر هو 1. إذا كانت كل البتات 0 أو 1، يُرجع الناتج 0.
>>> 10^7
13
>>>

4. المشغل للتكميل الثنائي
تكميل العدد ‘A’ في Python يكون مساويًا لـ -(A+1).
>>> ~10
-11
>>> ~-10
9
>>>

5. المشغل للتحريك لليسار بشكل ثنائي
يُقوم مشغل التحريك لليسار في Python بنقل بتات العامل الأيسر نحو الجهة اليسرى لعدد محدد من المرات المحددة في العامل الأيمن. ببساطة، يتم إضافة أصفار إلى نهاية الرقم الثنائي.
>>> 10 << 2
40
>>>

6. المشغل للتحريك لليمين بشكل ثنائي
تشير عامل الانزلاق اليميني في Python تمامًا إلى العكس التام لعامل الانزلاق اليساري. ثم يتم نقل بتات العاملة من الجهة اليسرى نحو الجهة اليمنى لعدد معين من المرات. بمعنى بسيط، يتم إزالة بتات الجهة اليمنى.
>>> 10 >> 2
2
>>>

تكنولوجيا تشغيل عوامل Python
تدعم Python تكنولوجيا تشغيل عوامل الحمل الزائد. هناك طرق متعددة يمكننا من خلالها تنفيذ دعم لعوامل الحمل الزائد لعوامل البتات بالنسبة لكائناتنا المخصصة.
Bitwise Operator | Method to Implement |
---|---|
& | __and__(self, other) |
^ | __xor__(self, other) |
~ | __invert__(self) |
<< | __lshift__(self, other) |
>> | __rshift__(self, other) |
فيما يلي مثال على دعم تكنولوجيا تشغيل عوامل البتات لكائن مخصص.
class Data:
id = 0
def __init__(self, i):
self.id = i
def __and__(self, other):
print('Bitwise AND operator overloaded')
if isinstance(other, Data):
return Data(self.id & other.id)
else:
raise ValueError('Argument must be object of Data')
def __or__(self, other):
print('Bitwise OR operator overloaded')
if isinstance(other, Data):
return Data(self.id | other.id)
else:
raise ValueError('Argument must be object of Data')
def __xor__(self, other):
print('Bitwise XOR operator overloaded')
if isinstance(other, Data):
return Data(self.id ^ other.id)
else:
raise ValueError('Argument must be object of Data')
def __lshift__(self, other):
print('Bitwise Left Shift operator overloaded')
if isinstance(other, int):
return Data(self.id << other)
else:
raise ValueError('Argument must be integer')
def __rshift__(self, other):
print('Bitwise Right Shift operator overloaded')
if isinstance(other, int):
return Data(self.id >> other)
else:
raise ValueError('Argument must be integer')
def __invert__(self):
print('Bitwise Ones Complement operator overloaded')
return Data(~self.id)
def __str__(self):
return f'Data[{self.id}]'
d1 = Data(10)
d2 = Data(7)
print(f'd1&d2 = {d1&d2}')
print(f'd1|d2 = {d1|d2}')
print(f'd1^d2 = {d1^d2}')
print(f'd1<<2 = {d1<<2}')
print(f'd1>>2 = {d1>>2}')
print(f'~d1 = {~d1}')
الناتج:
Bitwise AND operator overloaded
d1&d2 = Data[2]
Bitwise OR operator overloaded
d1|d2 = Data[15]
Bitwise XOR operator overloaded
d1^d2 = Data[13]
Bitwise Left Shift operator overloaded
d1<<2 = Data[40]
Bitwise Right Shift operator overloaded
d1>>2 = Data[2]
Bitwise Ones Complement operator overloaded
~d1 = Data[-11]
إذا كنت غير ملم بتنسيق السلسلة الجديدة، يرجى قراءة f-strings في Python.
الملخص
عوامل البتات في Python تُستخدم في الغالب في الحسابات الرياضية. يمكننا تنفيذ طرق محددة لدعم عوامل البتات لتنفيذات فئة مخصصة لدينا أيضًا.
Source:
https://www.digitalocean.com/community/tutorials/python-bitwise-operators