Operaterji se uporabljajo za izvajanje operacij nad vrednostmi in spremenljivkami. To so posebni simboli, ki izvajajo aritmetične in logične izračune. Vrednost, s katero deluje operator, je znana kot operand.
Python bitni operaterji
Bitni operatorji Python se uporabljajo za izvajanje bitnih izračunov celih števil. Cela števila se najprej pretvorijo v binarno, nato pa se izvedejo operacije na vsakem bitu ali ustreznem paru bitov, od tod tudi ime bitni operatorji. Rezultat se nato vrne v decimalni obliki.
Opomba: Bitni operatorji Python delujejo samo na celih številih.
oblikovalski vzorci v Javi
| OPERATER | IME | OPIS | SINTAKSA |
|---|---|---|---|---|
| | & | Bitno IN | Rezultat bit 1, če sta oba operanda bita 1; sicer dobi bit 0. | x & y |
| | | Bitni ALI | Bit rezultata 1, če je katerikoli bit operanda 1; sicer dobi bit 0. | x | in | |
| ^ | Bitni XOR | Rezultat bit 1, če je katerikoli od bitov operanda enak 1, vendar ne oba, drugače rezultat bit 0. | x^y | |
| | ~ | Bitno NE | Obrne posamezne bite. | ~x |
| >> | Bitni premik v desno | Vrednost levega operanda se premakne proti desni za število bitov določen z desnim operandom. | x>> | |
| << | Bitni premik v levo | Vrednost levega operanda se premakne proti levi za število bitov določen z desnim operandom. | x<< |
Razumejmo vsakega operaterja posebej.
Bitni operator IN
The Python Bitno IN (&) operator vzame dva bitna vzorca enake dolžine kot parametra. Dvobitna cela števila se primerjajo. Če so biti na primerjanih položajih bitnih vzorcev 1, potem je nastali bit 1. Če ni, je 0.
primer: Vzemite dve bitni vrednosti X in Y, kjer je X = 7= (111)2in Y = 4 = (100)2. Vzemite Bitwise in oba X in y
Opomba: Tukaj, (111)2predstavljajo binarno število.
naredite skript sh izvedljiv

a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)> Izhod
a & b = 0>
Bitni operator ALI
The Python Bitno ALI (|) Operater vzame dve enakovredni bitni zasnovi kot meje; če sta dva bita v opazovani poziciji 0, je naslednji bit nič. Če ne, je 1.
primer: Vzemite dve bitni vrednosti X in Y, kjer je X = 7= (111)2in Y = 4 = (100)2. Vzemite bitni ALI obeh X, Y

a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)> Izhod
a | b = 14>
Bitni operator XOR
The Python bitni operator XOR (^). znan tudi kot izključni operator ALI, se uporablja za izvedbo operacije XOR na dveh operandih. XOR pomeni izključno ali in vrne true, če in samo če je natanko eden od operandov resničen. V kontekstu bitnih operacij primerja ustrezne bite dveh operandov. Če so biti različni, vrne 1; sicer vrne 0.
primer: Vzemite dve bitni vrednosti X in Y, kjer je X = 7= (111)2 in Y = 4 = (100)2. Vzemite Bitwise in oba X & Y

a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)> Izhod
a ^ b = 14>
Bitni operater NOT
Prejšnji trije bitni operatorji so binarni operatorji, ki za delovanje zahtevajo dva operanda. Vendar za razliko od drugih ta operator deluje samo z enim operandom.
The Operator Python Bitwise Not (~). deluje z eno samo vrednostjo in vrne njen komplement ena. To pomeni, da preklopi vse bite v vrednosti, preoblikuje 0 bitov v 1 in 1 bitov v 0, kar povzroči komplement binarnega števila ena.
Primer : Vzemite dve bitni vrednosti X in Y, kjer je X = 5= (101)2. Vzemite Bitno NE od X.

bash za zankoPython
a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)> Izhod
~a = -11>
Bitni premik
Ti operatorji se uporabljajo za premik bitov števila levo ali desno, s čimer se število pomnoži ali deli z dve. Uporabimo jih lahko, ko moramo število pomnožiti ali deliti z dve.
Python Bitni desni premik
Premakne bite števila v desno in posledično zapolni 0 v prazninah levo (zapolni 1 v primeru negativnega števila). Podoben učinek kot pri deljenju števila z neko potenco dvojke.
Example 1: a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 2. primer: a = -10 = 1111 0110 (binarni) 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)> Izhod
a>> 1 = 5 b>> 1 = -5>
Python Bitni premik v levo
Premakne bite števila v levo in posledično zapolni 0 na prazninah desno. Podoben učinek kot pri množenju števila s potenco dvojke.
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)> Izhod:
a << 1 = 10 b << 1 = -20>
Preobremenitev bitnega operaterja
Preobremenitev operaterja pomeni dajanje razširjenega pomena, ki presega njihov vnaprej določen operativni pomen. Operator + se na primer uporablja za seštevanje dveh celih števil ter za združevanje dveh nizov in spajanje dveh seznamov. To je mogoče doseči, ker je operator '+' preobremenjen z razredom int in str. Morda ste opazili, da isti vgrajeni operator ali funkcija kaže različno vedenje za predmete različnih razredov, to se imenuje Preobremenitev operaterja .
Spodaj je preprost primer preobremenitve bitnega operaterja.
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: dvigni ValueError('Mora biti objekt razreda Geek') def __invert__(self): print('Invertni operater preobremenjen') return ~self.value # Koda gonilnika if __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) natisni(~a)> Izhod:
And operator overloaded 8 Or operator overloaded 14 Xor operator overloaded 8 lshift operator overloaded 40960 rshift operator overloaded 8 Invert operator overloaded -11>
Opomba: Če želite izvedeti več o preobremenitvi operaterja Klikni tukaj .