Operatoriai naudojami operacijoms su reikšmėmis ir kintamaisiais atlikti. Tai yra specialūs simboliai, kurie atlieka aritmetinius ir loginius skaičiavimus. Vertė, kurią naudoja operatorius, yra žinoma kaip operandas.
Python Bitwise operatoriai
„Python“ bitų operatoriai naudojami sveikųjų skaičių bitų skaičiavimams atlikti. Pirmiausia sveikieji skaičiai konvertuojami į dvejetainius, o tada operacijos atliekamos su kiekvienu bitu arba atitinkama bitų pora, taigi ir pavadinimas bitų operatoriai. Tada rezultatas grąžinamas dešimtainiu formatu.
skirtumas tarp liūto ir tigro
Pastaba: Python bitų operatoriai veikia tik su sveikaisiais skaičiais.
| OPERATORIUS | VARDAS | APIBŪDINIMAS | SINTAKSĖ |
---|---|---|---|---|
| & | Bitiškai IR | Rezultato bitas 1, jei abu operando bitai yra 1; kitu atveju rezultatai 0 bitai. | x ir y |
| | Bitiškai ARBA | 1 rezultato bitas, jei kuris nors iš operando bitų yra 1; kitu atveju rezultatai 0 bitai. | x | ir | |
^ | Bitinis XOR | 1 rezultato bitas, jei kuris nors operando bitas yra 1, bet ne abu, kitu atveju rezultatų bitas yra 0. | x^y | |
| ~ | Bitiškai NE | Apverčia atskirus bitus. | ~x |
>> | Bitų poslinkis į dešinę | Kairiojo operando reikšmė perkeliama į dešinę pagal bitų skaičių nurodytas dešiniuoju operandu. | x>> | |
<< | Bitų poslinkis į kairę | Kairiojo operando reikšmė perkeliama į kairę pagal bitų skaičių nurodytas dešiniuoju operandu. | x<< |
Supraskime kiekvieną operatorių po vieną.
Bitwise IR operatorius
The Python Bitwise IR (&) operatorius kaip parametrus pasirenka du vienodo ilgio bitų šablonus. Dviejų bitų sveikieji skaičiai yra lyginami. Jei bitai lyginamose bitų šablonų pozicijose yra 1, tai gautas bitas yra 1. Jei ne, tai yra 0.
Pavyzdys: Paimkite dvi bitų reikšmes X ir Y, kur X = 7 = (111)2ir Y = 4 = (100)2. Paimkite Bitwise ir X ir y
Pastaba: Čia (111)2reiškia dvejetainį skaičių.
a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)>
Išvestis
a & b = 0>
Bitwise ARBA operatorius
The Python Bitwise ARBA (|) Operatorius kaip ribas laiko dvi lygiaverčio ilgio bitų konstrukcijas; jei du bitai peržiūrimoje padėtyje yra 0, kitas bitas yra nulis. Jei ne, tai yra 1.
Pavyzdys: Paimkite dvi bitų reikšmes X ir Y, kur X = 7 = (111)2ir Y = 4 = (100)2. Paimkite bitais ARBA iš X, Y
a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)>
Išvestis
sąrašo mazgas java
a | b = 14>
Bitwise XOR operatorius
The Python Bitwise XOR (^) operatorius Taip pat žinomas kaip išskirtinis OR operatorius, naudojamas atlikti XOR operaciją dviem operandais. XOR reiškia išskirtinį arba ir grąžina teisingą tada ir tik tada, kai vienas iš operandų yra teisingas. Bitų operacijų kontekste jis lygina atitinkamus dviejų operandų bitus. Jei bitai skiriasi, jis grąžina 1; kitu atveju jis grąžina 0.
Pavyzdys: Paimkite dvi bitų reikšmes X ir Y, kur X = 7= (111)2 ir Y = 4 = (100)2 . Paimkite Bitwise ir X ir Y
a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)>
Išvestis
a ^ b = 14>
Bitwise NE operatorius
Ankstesni trys bitų operatoriai yra dvejetainiai operatoriai, todėl norint veikti, reikia dviejų operandų. Tačiau skirtingai nei kiti, šis operatorius veikia tik su vienu operandu.
The Python Bitwise Ne (~) operatorius veikia su viena verte ir grąžina jos papildinį. Tai reiškia, kad jis perjungia visus vertės bitus, paversdamas 0 bitus į 1 ir 1 bitus į 0, todėl dvejetainio skaičiaus papildymas yra vienas.
Pavyzdys : Paimkite dvi bitų reikšmes X ir Y, kur X = 5= (101)2 . Paimkite Bitwise NE iš X.
a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)>
Išvestis
~a = -11>
Bitinis poslinkis
Šie operatoriai naudojami skaičiaus bitams perkelti į kairę arba į dešinę, taip padauginant arba padalant skaičių atitinkamai iš dviejų. Jie gali būti naudojami, kai turime padauginti arba padalyti skaičių iš dviejų.
Python Bitinis dešinysis poslinkis
Dėl to skaičiaus bitai perkeliami į dešinę, o tuštumos kairėje užpildomos 0 (užpildo 1, jei skaičius yra neigiamas). Panašus efektas kaip skaičių padalijus iš dviejų laipsnių.
Example 1: a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 2 pavyzdys: a = -10 = 1111 0110 (dvejetainis) 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)>> Išvestis
a>> 1 = 5 b>> 1 = -5>
Python Bitiškai kairysis poslinkis
Perkelia skaičiaus bitus į kairę ir užpildo 0 tuščiose vietose dešinėje. Panašus efektas kaip skaičių padauginus iš dviejų galių.
a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)>
Išvestis:
a << 1 = 10 b << 1 = -20>
Bitinio operatoriaus perkrova
Operatoriaus perkrova reiškia suteikti išplėstinę prasmę už iš anksto apibrėžtą operatyvinę reikšmę. Pavyzdžiui, operatorius + naudojamas pridėti du sveikuosius skaičius, taip pat sujungti dvi eilutes ir sujungti du sąrašus. Tai pasiekiama, nes „+“ operatorius yra perkrautas int klasės ir str klasės. Galbūt pastebėjote, kad tas pats integruotas operatorius arba funkcija rodo skirtingą skirtingų klasių objektų elgesį, tai vadinama Operatoriaus perkrova .
Žemiau pateikiamas paprastas „Bitwise“ operatoriaus perkrovos pavyzdys.
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('Turi būti klasės Geek objektas') def __invert__(self): print('Invert operator overloaded') return ~self.value # Tvarkyklės kodas, jei __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a)<< b) print(a>> b) spausdinti(~a)>>
Išvestis: