Operadors s'utilitzen per realitzar operacions sobre valors i variables. Aquests són els símbols especials que duen a terme càlculs aritmètics i lògics. El valor amb el qual opera l'operador es coneix com a operand.
Operadors Python per bits
Els operadors bit a bit de Python s'utilitzen per realitzar càlculs bit a bit sobre nombres enters. Els nombres enters es converteixen primer en binaris i després es realitzen operacions sobre cada bit o parell de bits corresponent, d'aquí el nom d'operadors bit a bit. A continuació, el resultat es retorna en format decimal.
Nota: Els operadors bit a bit de Python només funcionen amb nombres enters.
| OPERADOR | NOM | DESCRIPCIÓ | SINTAXI |
|---|---|---|---|---|
| | & | I per bits | Resultat bit 1, si ambdós bits operands són 1; en cas contrari resulta el bit 0. | x & y |
| | | O per bits | Resultat bit 1, si algun dels bits de l'operand és 1; en cas contrari, resulta el bit 0. | x | i | |
| ^ | XOR bit a bit | Resulta el bit 1, si algun dels bits de l'operand és 1 però no tots dos, en cas contrari resulta el bit 0. | x ^ y | |
| | ~ | Bit a bit NO | Inverteix bits individuals. | ~x |
| >> | Desplaçament a la dreta per bits | El valor de l'operand esquerre es mou cap a la dreta pel nombre de bits especificat per l'operand correcte. | x>> | |
Desplaçament a l'esquerra per bits de Python numera l'alfabet | << | Desplaçament a l'esquerra per bits | El valor de l'operand esquerre es mou cap a l'esquerra pel nombre de bits especificat per l'operand correcte. 3d en autocad | x<< |
Entenem cada operador un per un.
Operador AND bit a bit
El Python i per bits (&) L'operador pren com a paràmetres dos patrons de bits d'igual longitud. Es comparen els nombres enters de dos bits. Si els bits a les posicions comparades dels patrons de bits són 1, el bit resultant és 1. Si no, és 0.
Exemple: Preneu els valors de dos bits X i Y, on X = 7 = (111)2i Y = 4 = (100)2. Prengui bit a bit i de X i y
Nota: Aquí, (111)2representar un nombre binari.

a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)> Sortida
a & b = 0>
Operador OR per bits
El Python Bitwise OR (|) L'operador pren com a límits dos dissenys de bits de longitud equivalent; si els dos bits a la posició mirada són 0, el següent bit és zero. Si no, és 1.
Exemple: Preneu els valors de dos bits X i Y, on X = 7 = (111)2i Y = 4 = (100)2. Preneu OR bit a bit de les dues X, Y

a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)> Sortida
a | b = 14>
Operador XOR per bits
El Python Bitwise XOR (^) Operador també conegut com a operador OR exclusiu, s'utilitza per realitzar l'operació XOR en dos operands. XOR significa o exclusiu, i retorna cert si i només si exactament un dels operands és cert. En el context de les operacions bit a bit, compara els bits corresponents de dos operands. Si els bits són diferents, retorna 1; en cas contrari, retorna 0.
Exemple: Preneu dos valors de bit X i Y, on X = 7= (111)2 i Y = 4 = (100)2 . Prengui bit a bit i de X i Y

a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)> Sortida
a ^ b = 14>
Bit a bit NO operador
Els tres operadors de bits anteriors són operadors binaris, que necessiten dos operands per funcionar. Tanmateix, a diferència dels altres, aquest operador només funciona amb un operand.
El Operador Python bit a bit no (~). treballa amb un sol valor i retorna el seu complement. Això significa que canvia tots els bits del valor, transformant 0 bits a 1 i 1 bits a 0, donant com a resultat el complement únic del nombre binari.
Exemple : Prengui els valors de dos bits X i Y, on X = 5= (101)2 . Prengui bit a bit NO de X.

a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)> Sortida
~a = -11>
Canvi de bits
Aquests operadors s'utilitzen per desplaçar els bits d'un nombre cap a l'esquerra o cap a la dreta, multiplicant o dividint el nombre per dos respectivament. Es poden utilitzar quan hem de multiplicar o dividir un nombre per dos.
ankita dave
Python Desplaçament a la dreta per bits
Desplaça els bits del nombre cap a la dreta i com a resultat omple 0 als buits esquerre (omple 1 en el cas d'un nombre negatiu). Efecte similar al de dividir el nombre amb una potència de dos.
Example 1: a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Exemple 2: a = -10 = 1111 0110 (binari) a>> 1 = 1111 1011 = -5>>>Pythona = 10 b = -10 # print bitwise right shift operator print('a>> 1 =', a>> 1) print('b>> 1 =', b>> 1)>Sortida
Python Desplaçament a l'esquerra per bits Desplaça els bits del número cap a l'esquerra i com a resultat omple 0 als buits a la dreta. Efecte similar al de multiplicar el nombre amb una mica de potència de dos.
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>Pythona = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)>Sortida:
a << 1 = 10 b << 1 = -20>Sobrecàrrega de l'operador per bits
Sobrecàrrega de l'operador significa donar un significat estès més enllà del seu significat operatiu predefinit. Per exemple, l'operador + s'utilitza per afegir dos nombres enters, així com unir dues cadenes i combinar dues llistes. Es pot aconseguir perquè l'operador '+' està sobrecarregat per la classe int i la classe str. És possible que hàgiu notat que el mateix operador o funció incorporada mostra un comportament diferent per a objectes de diferents classes, això s'anomena Sobrecàrrega de l'operador .
A continuació es mostra un exemple senzill de sobrecàrrega d'operadors per bits.
Python# 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('Ha de ser un objecte de la classe Geek') def __invert__(self): print('Inverteix l'operador sobrecarregat') return ~self.value # Codi del controlador si __name__ == '__main__': a = Geek(10) b = Geek(12) print(a i b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) imprimir(~a)>>>Sortida:
Nota: Per saber més sobre la sobrecàrrega de l'operador clica aquí .