logo

Operatory bitowe Pythona

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.


OPERATORNAZWAOPISSKŁADNIA

Bitowy operator AND



&Bitowe ANDBit wyniku 1, jeśli oba bity argumentu mają wartość 1; w przeciwnym razie wynikiem będzie bit 0.x i y

Bitowy operator OR

|Bitowe LUBBit wyniku 1, jeśli którykolwiek z bitów operandu ma wartość 1; w przeciwnym razie wynikiem będzie bit 0.x | I

Bitowy operator XOR

^Bitowy XORBit 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

Bitowy operator NOT



~Bitowe NIE

Odwraca poszczególne bity.

lista tablic posortowana
~x

Bitowe przesunięcie w prawo w Pythonie

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

Pyton
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

Pyton
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

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

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