logo

Bitové operátory Pythonu

Operátoři se používají k provádění operací s hodnotami a proměnnými. Jedná se o speciální symboly, které provádějí aritmetické a logické výpočty. Hodnota, se kterou operátor pracuje, se nazývá operand.

Bitové operátory Pythonu

Bitové operátory Pythonu se používají k provádění bitových výpočtů na celých číslech. Celá čísla jsou nejprve převedena na binární a poté jsou prováděny operace s každým bitem nebo odpovídající dvojicí bitů, odtud název bitové operátory. Výsledek je pak vrácen v desítkovém formátu.



Poznámka: Bitové operátory Pythonu fungují pouze na celých číslech.


OPERÁTORNÁZEVPOPISSYNTAX

Bitový operátor AND



&Bitové ANDVýsledný bit 1, pokud jsou oba bity operandu 1; jinak výsledek bit 0.x & y

Bitový operátor OR

|Bitově NEBOVýsledný bit 1, pokud je některý z bitů operandu 1; jinak výsledek bit 0.x | a

Bitový operátor XOR

^Bitový XORVýsledek bit 1, pokud některý z bitů operandu je 1, ale ne oba, jinak bude výsledek bit 0.x^y

Bitový NOT operátor



~Bitově NE

Invertuje jednotlivé bity.

~x

Python Bitový pravý Shift

>>Bitový posun doprava

Hodnota levého operandu se posune doprava o počet bitů

specifikovaný správným operandem.

x>>

Python Bitový levý Shift

<<Bitový posun doleva

Hodnota levého operandu se posune o počet bitů směrem doleva

specifikované správným operandem.

x<<

Pojďme pochopit každého operátora jeden po druhém.

Bitový operátor AND

The Python bitové AND (&) operátor bere dva stejně dlouhé bitové vzory jako parametry. Porovnávají se dvoubitová celá čísla. Pokud jsou bity na porovnávaných pozicích bitových vzorů 1, pak je výsledný bit 1. Pokud ne, je 0.

Příklad: Vezměte dvě bitové hodnoty X a Y, kde X = 7= (111)2a Y = 4 = (100)2. Vezměte Bitwise a oba X a y

Poznámka: Tady (111)2představují binární číslo.

vlc ke stažení z youtube
Krajta
a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)>

Výstup

a & b = 0>

Bitový operátor OR

The Python bitové NEBO (|) Operátor bere jako hranice dvě ekvivalentní délky bitů; pokud jsou dva bity v pozici pohledu 0, další bit je nula. Pokud ne, je 1.

centos vs redhat

Příklad: Vezměte dvě bitové hodnoty X a Y, kde X = 7= (111)2a Y = 4 = (100)2. Vezměte bitové OR obou X, Y

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

Výstup

a | b = 14>

Bitový operátor XOR

The Operátor bitového XOR (^) Pythonu také známý jako výhradní operátor OR, se používá k provedení operace XOR na dvou operandech. XOR je zkratka pro exkluzivní nebo a vrací true tehdy a jen tehdy, když je pravdivý právě jeden z operandů. V kontextu bitových operací porovnává odpovídající bity dvou operandů. Pokud jsou bity různé, vrátí 1; jinak vrátí 0.

Příklad: Vezměte dvě bitové hodnoty X a Y, kde X = 7= (111)2 a Y = 4 = (100)2. Vezměte Bitwise a oba X a Y

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

Výstup

a ^ b = 14>

Bitový NOT operátor

Předchozí tři bitové operátory jsou binární operátory, které ke své funkci vyžadují dva operandy. Na rozdíl od ostatních však tento operátor operuje pouze s jedním operandem.

The Bitový ne (~) operátor Pythonu pracuje s jedinou hodnotou a vrací její doplněk. To znamená, že přepíná všechny bity v hodnotě a transformuje 0 bitů na 1 a 1 bit na 0, což vede k doplňku jedničky k binárnímu číslu.

Příklad : Vezměte dvě bitové hodnoty X a Y, kde X = 5= (101)2 . Vezměte Bitwise NOT z X.

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

Výstup

~a = -11>

Bitový posun

Tyto operátory se používají k posunutí bitů čísla doleva nebo doprava, čímž se číslo vynásobí nebo vydělí dvěma. Lze je použít, když musíme číslo vynásobit nebo vydělit dvěma.

Krajta Bitový pravý Shift

Posune bity čísla doprava a v důsledku toho vyplní 0 v prázdných místech (v případě záporného čísla vyplní 1). Podobný efekt jako při dělení čísla nějakou mocninou dvou.

  Example 1:   a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Příklad 2: a = -10 = 1111 0110 (binární) a>> 1 = 1111 1011 = -5>
Krajta
a = 10 b = -10 # print bitwise right shift operator print('a>> 1 =', a>> 1) tisk ('b>> 1 =', b>> 1)>

Výstup

a>> 1 = 5 b>> 1 = -5>

Krajta Bitový levý Shift

Posune bity čísla doleva a v důsledku toho vyplní 0 na mezery vpravo. Podobný efekt jako vynásobení čísla nějakou mocninou dvou.

  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>
Krajta
a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)>

Výstup:

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

Přetížení bitového operátora

Přetížení operátora znamená dávat rozšířený význam nad rámec jejich předem definovaného provozního významu. Například operátor + se používá k přidání dvou celých čísel a také ke spojení dvou řetězců a sloučení dvou seznamů. Je to dosažitelné, protože operátor „+“ je přetížen třídou int a třídou str. Možná jste si všimli, že stejný vestavěný operátor nebo funkce vykazuje různé chování pro objekty různých tříd, tomu se říká Přetížení operátora .

Níže je jednoduchý příklad přetížení bitového operátora.

Krajta
# 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 být objekt třídy Geek') def __invert__(self): print('Invertovat operátor přetížený') return ~self.value # Kód ovladače, pokud __name__ == '__main__': a = Geek(10) b = Geek(12) tisknout(a & b) tisknout(a | b) tisknout(a ^ b) tisknout(a<< b) print(a>> b) tisknout(~a)>

Výstup:

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: Chcete-li se dozvědět více o přetěžování operátorů klikněte zde .