logo

Python Bitwise operatoriai

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.


OPERATORIUSVARDASAPIBŪDINIMASSINTAKSĖ

Bitų IR operatorius



&Bitiškai IRRezultato bitas 1, jei abu operando bitai yra 1; kitu atveju rezultatai 0 bitai.x ir y

Bitų OR operatorius

|Bitiškai ARBA1 rezultato bitas, jei kuris nors iš operando bitų yra 1; kitu atveju rezultatai 0 bitai.x | ir

Bitwise XOR operatorius

^Bitinis XOR1 rezultato bitas, jei kuris nors operando bitas yra 1, bet ne abu, kitu atveju rezultatų bitas yra 0.x^y

Bitwise NE operatorius



~Bitiškai NE

Apverčia atskirus bitus.

~x

Python Bitwise Shift į dešinę

>>Bitų poslinkis į dešinę

Kairiojo operando reikšmė perkeliama į dešinę pagal bitų skaičių

nurodytas dešiniuoju operandu.

x>>

Python Bitwise Kairysis poslinkis

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

Python
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

Python
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

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

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

Pastaba: Norėdami sužinoti daugiau apie operatoriaus perkrovą paspauskite čia .