logo

Operadors Python per bits

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.


OPERADORNOMDESCRIPCIÓSINTAXI

Operador AND bit a bit



&I per bitsResultat bit 1, si ambdós bits operands són 1; en cas contrari resulta el bit 0.x & y

Operador OR per bits

|O per bitsResultat bit 1, si algun dels bits de l'operand és 1; en cas contrari, resulta el bit 0.x | i

Operador XOR per bits

^XOR bit a bitResulta 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 operador



~Bit a bit NO

Inverteix bits individuals.

~x

Canvi a la dreta per bits de Python

>>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.

Python
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

Python
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

Python
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.

Python
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>>>Python 
a = 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>
Python
a = 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í .