logo

Bitové operátory Pythonu

Operátori sa používajú na vykonávanie operácií s hodnotami a premennými. Toto sú špeciálne symboly, ktoré vykonávajú aritmetické a logické výpočty. Hodnota, s ktorou operátor pracuje, je známa ako Operand.

Bitové operátory Pythonu

Bitové operátory Pythonu sa používajú na vykonávanie bitových výpočtov na celých číslach. Celé čísla sa najskôr skonvertujú na binárne a potom sa vykonajú operácie s každým bitom alebo zodpovedajúcim párom bitov, preto sa nazýva bitové operátory. Výsledok sa potom vráti v desiatkovom formáte.

Poznámka: Bitové operátory Pythonu fungujú iba na celých číslach.




OPERÁTORNÁZOVPOPISSYNTAX

Bitový operátor AND

&Bitové ANDVýsledný bit 1, ak sú oba bity operandov 1; inak výsledok bit 0.x a y

Bitový operátor OR

|Bitové ALEBOVýsledný bit 1, ak je niektorý z bitov operandov 1; inak výsledok bit 0.x | a

Bitový operátor XOR

^Bitový XORVýsledok bit 1, ak niektorý z bitov operandov je 1, ale nie oba, inak bude bit 0.x^y

Bitový operátor NIE

~Bitovo NIE

Invertuje jednotlivé bity.

reťazec podreťazec java
~x

Python Bitový pravý Shift

>>Bitový posun doprava

Hodnota ľavého operandu sa posunie doprava o počet bitov

špecifikované správnym operandom.

x>>

Python Bitový Shift vľavo

java sa vytrhne zo slučky
<<Bitový posun doľava

Hodnota ľavého operandu sa posunie smerom doľava o počet bitov

špecifikované správnym operandom.

x <<

Poďme pochopiť každého operátora jeden po druhom.

Bitový operátor AND

The Python Bitové A (&) operátor berie ako parametre dva bitové vzory rovnakej dĺžky. Porovnajú sa dvojbitové celé čísla. Ak sú bity v porovnávaných pozíciách bitových vzorov 1, potom je výsledný bit 1. Ak nie, je 0.

Príklad: Vezmite dve bitové hodnoty X a Y, kde X = 7= (111)2a Y = 4 = (100)2. Vezmite Bitwise a oboch X a y

Poznámka: Tu (111)2predstavujú binárne číslo.

Python
a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)>

Výkon

a & b = 0>

Bitový operátor OR

The Python bitové ALEBO (|) Operátor berie ako hranice dva ekvivalentné dĺžky bitov; ak sú dva bity v sledovanej pozícii 0, nasledujúci bit je nula. Ak nie, je to 1.

Príklad: Vezmite dve bitové hodnoty X a Y, kde X = 7= (111)2a Y = 4 = (100)2. Vezmite bitové ALEBO oboch X, Y

Python
a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)>

Výkon

a | b = 14>

Bitový operátor XOR

The Bitový operátor XOR (^) Pythonu tiež známy ako výhradný operátor OR, sa používa na vykonanie operácie XOR na dvoch operandoch. XOR znamená exkluzívne alebo a vráti hodnotu true vtedy a len vtedy, ak je pravdivý práve jeden z operandov. V kontexte bitových operácií porovnáva zodpovedajúce bity dvoch operandov. Ak sú bity odlišné, vráti 1; v opačnom prípade vráti 0.

Príklad: Vezmite dve bitové hodnoty X a Y, kde X = 7= (111)2 a Y = 4 = (100)2. Vezmite Bitwise a X a Y

Python
a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)>

Výkon

markíza html
a ^ b = 14>

Bitový operátor NIE

Predchádzajúce tri bitové operátory sú binárne operátory, ktoré na fungovanie vyžadujú dva operandy. Na rozdiel od ostatných však tento operátor operuje len s jedným operandom.

The Bitový operátor Python nie (~). pracuje s jednou hodnotou a vracia jej doplnok. To znamená, že prepína všetky bity v hodnote, pričom transformuje 0 bitov na 1 a 1 bit na 0, čo vedie k doplnku jedničky k binárnemu číslu.

Príklad : Vezmite dve bitové hodnoty X a Y, kde X = 5= (101)2. Vezmite Bitwise NOT z X.

Python
a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)>

Výkon

~a = -11>

Bitový posun

Tieto operátory sa používajú na posunutie bitov čísla doľava alebo doprava, čím sa číslo vynásobí alebo vydelí dvoma. Môžu sa použiť, keď musíme číslo vynásobiť alebo vydeliť dvoma.

Python Bitový posun doprava

Posunie bity čísla doprava a vyplní 0 prázdne miesta vľavo (vyplní 1 v prípade záporného čísla). Podobný efekt ako pri delení čísla nejakou mocninou dvoch.

  Example 1:   a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Príklad 2: a = -10 = 1111 0110 (binárne) 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)>

Výkon

Python Bitový posun doľava

Posunie bity čísla doľava a v dôsledku toho vyplní 0 na medzery vpravo. Podobný efekt ako pri vynásobení čísla nejakou mocninou dvoch.

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

Výkon:

a << 1 = 10 b << 1 = -20>

Preťaženie bitového operátora

Preťaženie operátora znamená poskytnúť rozšírený význam nad rámec ich vopred definovaného prevádzkového významu. Napríklad operátor + sa používa na pridanie dvoch celých čísel, ako aj na spojenie dvoch reťazcov a zlúčenie dvoch zoznamov. Je to dosiahnuteľné, pretože operátor „+“ je preťažený triedou int a triedou str. Možno ste si všimli, že rovnaký vstavaný operátor alebo funkcia vykazuje rôzne správanie pre objekty rôznych tried, nazýva sa to Preťaženie operátora .

java nahradiť znak v reťazci

Nižšie je uvedený jednoduchý príklad preťaženia operátora Bitwise.

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('Musí to byť objekt triedy Geek') def __invert__(self): print('Invertovať operátor preťažený') return ~self.value # Kód ovládača, ak __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) tlačiť(~a)>

Výkon:

And operator overloaded 8 Or operator overloaded 14 Xor operator overloaded 8 lshift operator overloaded 40960 rshift operator overloaded 8 Invert operator overloaded -11>

Poznámka: Ak chcete vedieť viac o preťažení operátora kliknite tu .