Operatorzy służą do wykonywania operacji na wartościach i zmiennych. Są to specjalne symbole, które wykonują obliczenia arytmetyczne i logiczne. Wartość, na której operuje operator, nazywana jest operandem.
Operatory bitowe Pythona
Operatory bitowe Pythona służą do wykonywania obliczeń bitowych na liczbach całkowitych. Liczby całkowite są najpierw konwertowane na binarne, a następnie wykonywane są operacje na każdym bicie lub odpowiedniej parze bitów, stąd nazwa operatorów bitowych. Wynik jest następnie zwracany w formacie dziesiętnym.
Notatka: Operatory bitowe Pythona działają tylko na liczbach całkowitych.
| OPERATOR | NAZWA | OPIS | SKŁADNIA |
|---|---|---|---|---|
| | & | Bitowe AND | Bit wyniku 1, jeśli oba bity argumentu mają wartość 1; w przeciwnym razie wynikiem będzie bit 0. | x i y |
| | | Bitowe LUB | Bit wyniku 1, jeśli którykolwiek z bitów operandu ma wartość 1; w przeciwnym razie wynikiem będzie bit 0. | x | I | |
| ^ | Bitowy XOR | Bit wyniku 1, jeśli którykolwiek z bitów operandu ma wartość 1, ale nie oba, w przeciwnym razie wynikiem jest bit 0. | x^y | |
| | ~ | Bitowe NIE | Odwraca poszczególne bity. lista tablic posortowana | ~x |
| >> | Bitowe przesunięcie w prawo | Wartość lewego operandu przesuwa się w prawo o liczbę bitów określony przez prawy operand. | x>> | |
Bitowe przesunięcie w lewo w Pythonie Zmień kolor w Gimpie | << | Bitowe przesunięcie w lewo | Wartość lewego operandu przesuwa się w lewo o liczbę bitów określony przez prawy operand. | x<< |
Przyjrzyjmy się każdemu operatorowi jeden po drugim.
Operator bitowy AND
The Python Bitowe ORAZ (&) operator przyjmuje jako parametry dwa wzorce bitów o równej długości. Porównywane są dwubitowe liczby całkowite. Jeśli bity w porównywanych pozycjach wzorców bitów mają wartość 1, wówczas bit wynikowy ma wartość 1. Jeśli nie, wynosi 0.
Przykład: Weź dwie wartości bitowe X i Y, gdzie X = 7 = (111)2i Y = 4 = (100)2. Weź Bitwise oraz X i Y
Notatka: Tutaj (111)2reprezentują liczbę binarną.

a = 10 b = 4 # Print bitwise AND operation print('a & b =', a & b)> Wyjście
a & b = 0>
Operator bitowy OR
The Python Bitowe LUB (|) Operator przyjmuje jako granice dwa projekty bitów o równoważnej długości; jeśli dwa bity w pozycji, na którą patrzymy, mają wartość 0, następny bit ma wartość zero. Jeśli nie, to 1.
Przykład: Weź dwie wartości bitowe X i Y, gdzie X = 7 = (111)2i Y = 4 = (100)2. Weź bitowy OR z obu X, Y

a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)> Wyjście
a | b = 14>
Bitowy operator XOR
The Operator bitowy XOR (^) Pythona znany również jako wyłączny operator OR, służy do wykonywania operacji XOR na dwóch operandach. XOR oznacza wyłączność lub i zwraca wartość true wtedy i tylko wtedy, gdy dokładnie jeden z operandów jest prawdziwy. W kontekście operacji bitowych porównuje odpowiednie bity dwóch operandów. Jeśli bity są różne, zwraca 1; w przeciwnym razie zwraca 0.
Przykład: Weź dwie wartości bitowe X i Y, gdzie X = 7= (111)2 i Y = 4 = (100)2 . Weź Bitwise oraz X i Y

a = 10 b = 4 # print bitwise XOR operation print('a ^ b =', a ^ b)> Wyjście
zmienna referencyjna w Javie
a ^ b = 14>
Bitowy operator NOT
Powyższe trzy operatory bitowe są operatorami binarnymi, co wymaga do działania dwóch operandów. Jednak w przeciwieństwie do innych operator ten działa tylko z jednym operandem.
The Operator bitowy nie (~) języka Python działa z pojedynczą wartością i zwraca jej uzupełnienie. Oznacza to, że przełącza wszystkie bity wartości, przekształcając 0 bitów na 1 i 1 bit na 0, co daje uzupełnienie liczby binarnej do jedynki.
Przykład : Weź dwie wartości bitowe X i Y, gdzie X = 5= (101)2 . Weź Bitwise NOT z X.

a = 10 b = 4 # Print bitwise NOT operation print('~a =', ~a)> Wyjście
~a = -11>
Przesunięcie bitowe
Operatory te służą do przesuwania bitów liczby w lewo lub w prawo, odpowiednio mnożąc lub dzieląc liczbę przez dwa. Można ich użyć, gdy musimy pomnożyć lub podzielić liczbę przez dwa.
Pyton Bitowe przesunięcie w prawo
Przesuwa bity liczby w prawo i w rezultacie wypełnia 0 w pustych przestrzeniach (wypełnia 1 w przypadku liczby ujemnej). Podobny efekt jak dzielenie liczby przez pewną potęgę dwójki.
Example 1: a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Przykład 2: a = -10 = 1111 0110 (binarnie) a>> 1 = 1111 1011 = -5>Pyton
a = 10 b = -10 # print bitwise right shift operator print('a>> 1 =', a>> 1) print('b>> 1 =', b>> 1)> Wyjście
a>> 1 = 5 b>> 1 = -5>
Pyton Bitowe przesunięcie w lewo
Przesuwa bity liczby w lewo i w rezultacie wypełnia 0 w pustych przestrzeniach w prawo. Podobny efekt jak pomnożenie liczby przez pewną potęgę dwójki.
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>Pyton
a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)> Wyjście:
a << 1 = 10 b << 1 = -20>
Przeciążenie operatora bitowego
Przeciążenie operatora oznacza nadanie rozszerzonego znaczenia wykraczającego poza ich z góry określone znaczenie operacyjne. Na przykład operator + służy do dodawania dwóch liczb całkowitych, a także do łączenia dwóch ciągów znaków i łączenia dwóch list. Jest to osiągalne, ponieważ operator „+” jest przeciążony przez klasy int i str. Być może zauważyłeś, że ten sam wbudowany operator lub funkcja wykazuje odmienne zachowanie dla obiektów różnych klas. Jest to tzw Przeciążenie operatora .
sprawdź wartość null w Javie
Poniżej znajduje się prosty przykład przeciążenia operatora Bitwise.
Pyton # 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('Musi być obiektem klasy Geek') def __invert__(self): print('Operator odwracania przeciążony') return ~self.value # Kod sterownika jeśli __name__ == '__main__': a = Geek(10) b = Geek(12) print(a i b) print(a | b) print(a ^ b) print(a<< b) print(a>> b) print(~a)> Wyjście:
And operator overloaded 8 Or operator overloaded 14 Xor operator overloaded 8 lshift operator overloaded 40960 rshift operator overloaded 8 Invert operator overloaded -11>
Notatka: Aby dowiedzieć się więcej o przeciążeniu operatora Kliknij tutaj .