logo

Operatori Python pe biți

Operatori sunt folosite pentru a efectua operații asupra valorilor și variabilelor. Acestea sunt simbolurile speciale care efectuează calcule aritmetice și logice. Valoarea pe care operează operatorul este cunoscută sub numele de Operand.

Operatori Python pe biți

Operatorii Python pe biți sunt utilizați pentru a efectua calcule pe biți pe numere întregi. Numerele întregi sunt mai întâi convertite în binar și apoi sunt efectuate operații pe fiecare bit sau pereche de biți corespunzătoare, de unde și denumirea de operatori pe biți. Rezultatul este apoi returnat în format zecimal.



Notă: Operatorii Python pe biți funcționează numai pe numere întregi.


if else declarație java
OPERATORNUMEDESCRIERESINTAXĂ

Operatorul AND pe biți



&ȘI pe bițiBitul rezultat 1, dacă ambii biți operand sunt 1; altfel rezultă bit 0.X y

Operator SAU pe biți

|SAU pe bițiBitul rezultat 1, dacă oricare dintre biții operand este 1; altfel rezultă bit 0.x | și

Operator XOR pe biți

^XOR pe bițiRezultă bitul 1, dacă oricare dintre biții operand este 1, dar nu ambii, în caz contrar rezultă bitul 0.x^y

Operator NU pe biți



~Pe bit NU

Inversează biții individuali.

~x

Python Bitwise Right Shift

>>Deplasare pe biți la dreapta

Valoarea operandului din stânga este mutată spre dreapta cu numărul de biți

specificat de operandul corect.

x>>

Python Bitwise Left Shift

<<Deplasare la stânga pe biți

Valoarea operandului din stânga este mutată spre stânga cu numărul de biți

specificat de operandul corect.

x<<

Să înțelegem fiecare operator unul câte unul.

Operator ȘI pe biți

The Python pe biți și (&) operatorul ia ca parametri două modele de biți de lungime egală. Numerele întregi pe doi biți sunt comparate. Dacă biții din pozițiile comparate ale modelelor de biți sunt 1, atunci bitul rezultat este 1. Dacă nu, este 0.

Exemplu: Luați valorile pe doi biți X și Y, unde X = 7= (111)2și Y = 4 = (100)2. Luați pe biți și din ambele X și y

listă imuabilă

Notă: Aici, (111)2reprezintă un număr binar.

Piton
a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)>

Ieșire

a & b = 0>

Operator SAU pe biți

The Python Bitwise SAU (|) Operatorul ia ca limite două modele de biți de lungime echivalentă; dacă cei doi biți din poziția analizată sunt 0, următorul bit este zero. Dacă nu, este 1.

Exemplu: Luați valorile pe doi biți X și Y, unde X = 7= (111)2și Y = 4 = (100)2. Luați SAU pe biți din ambele X, Y

100 km/h în mph
Piton
a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)>

Ieșire

a | b = 14>

Operator XOR pe biți

The Python Bitwise XOR (^) Operator cunoscut și ca operator OR exclusiv, este folosit pentru a efectua operația XOR pe doi operanzi. XOR înseamnă sau exclusiv și returnează adevărat dacă și numai dacă exact unul dintre operanzi este adevărat. În contextul operațiilor pe biți, compară biții corespunzători ai doi operanzi. Dacă biții sunt diferiți, returnează 1; în caz contrar, returnează 0.

Exemplu: Luați valorile de doi biți X și Y, unde X = 7= (111)2 și Y = 4 = (100)2 . Luați pe biți și din ambele X și Y

Piton
a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)>

Ieșire

a ^ b = 14>

Operator NU pe biți

Cei trei operatori anteriori pe biți sunt operatori binari, necesitând doi operanzi pentru a funcționa. Totuși, spre deosebire de celelalte, acest operator operează doar cu un singur operand.

The Operator Python Bitwise Not (~). lucrează cu o singură valoare și returnează complementul său. Aceasta înseamnă că comută toți biții din valoare, transformând 0 biți la 1 și 1 biți la 0, rezultând complementul unu al numărului binar.

Exemplu : Luați valorile de doi biți X și Y, unde X = 5= (101)2 . Luați pe biți NU din X.

Piton
a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)>

Ieșire

~a = -11>

Schimbare pe biți

Acești operatori sunt utilizați pentru a deplasa biții unui număr la stânga sau la dreapta, înmulțind sau împărțind astfel numărul cu doi. Ele pot fi folosite atunci când trebuie să înmulțim sau să împărțim un număr cu doi.

algebra multimilor

Piton Shift la dreapta pe biți

Mută ​​biții numărului la dreapta și completează 0 în golurile din stânga (completează 1 în cazul unui număr negativ) ca rezultat. Efect similar cu împărțirea numărului cu o putere de doi.

  Example 1:   a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Exemplul 2: a = -10 = 1111 0110 (Binar) a>> 1 = 1111 1011 = -5>>>Piton 
a = 10 b = -10 # print bitwise right shift operator print('a>> 1 =', a>> 1) print('b>> 1 =', b>> 1)>

Ieșire

Piton Shift la stânga pe biți

Mută ​​biții numărului la stânga și completează 0 în golurile la dreapta drept rezultat. Efect similar înmulțirii numărului cu o putere de doi.

  Example 1:   a = 5 = 0000 0101 (Binary) a << 1 = 0000 1010 = 10 a << 2 = 0001 0100 = 20   Example 2:   b = -10 = 1111 0110 (Binary) b << 1 = 1110 1100 = -20 b << 2 = 1101 1000 = -40>
Piton
a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)>

Ieșire:

a << 1 = 10 b << 1 = -20>

Supraîncărcarea operatorului pe biți

Supraîncărcarea operatorului înseamnă a da un sens extins dincolo de sensul lor operațional predefinit. De exemplu, operatorul + este folosit pentru a adăuga două numere întregi, precum și pentru a uni două șiruri și pentru a îmbina două liste. Este realizabil deoarece operatorul „+” este supraîncărcat de clasa int și clasa str. S-ar putea să fi observat că același operator sau funcție încorporată arată un comportament diferit pentru obiecte din clase diferite, aceasta se numește Supraîncărcarea operatorului .

Mai jos este un exemplu simplu de supraîncărcare a operatorului pe biți.

Piton
# Python program to demonstrate # operator overloading class Geek(): def __init__(self, value): self.value = value def __and__(self, obj): print('And operator overloaded') if isinstance(obj, Geek): return self.value & obj.value else: raise ValueError('Must be a object of class Geek') def __or__(self, obj): print('Or operator overloaded') if isinstance(obj, Geek): return self.value | obj.value else: raise ValueError('Must be a object of class Geek') def __xor__(self, obj): print('Xor operator overloaded') if isinstance(obj, Geek): return self.value ^ obj.value else: raise ValueError('Must be a object of class Geek') def __lshift__(self, obj): print('lshift operator overloaded') if isinstance(obj, Geek): return self.value << obj.value else: raise ValueError('Must be a object of class Geek') def __rshift__(self, obj): print('rshift operator overloaded') if isinstance(obj, Geek): return self.value>> obj.value else: raise ValueError('Trebuie să fie un obiect al clasei Geek') def __invert__(self): print('Invertire operator supraîncărcat') return ~self.value # Codul driverului dacă __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) print(~a)>>> 

Ieșire:

Notă: Pentru a afla mai multe despre supraîncărcarea operatorului click aici .