logo

Побітові оператори Python

Оператори використовуються для виконання операцій над значеннями та змінними. Це спеціальні символи, які виконують арифметичні та логічні обчислення. Значення, з яким оперує оператор, називається операндом.

Побітові оператори Python

Побітові оператори Python використовуються для виконання побітових обчислень над цілими числами. Цілі числа спочатку перетворюються в двійкові, а потім над кожним бітом або відповідною парою бітів виконуються операції, звідси й назва побітових операторів. Потім результат повертається в десятковому форматі.



Примітка: Побітові оператори Python працюють лише з цілими числами.


ОПЕРАТОРІМ'ЯОПИССИНТАКСИС

Порозрядний оператор І



java char до рядка
&Побітове ІБіт результату 1, якщо обидва біти операнда дорівнюють 1; інакше результат біт 0.x & y

Побітовий оператор АБО

|Порозрядне АБОБіт результату 1, якщо будь-який з бітів операнда дорівнює 1; інакше результат біт 0.х | і

Побітовий оператор XOR

^Побітове XORБіт результату 1, якщо будь-який з бітів операнда дорівнює 1, але не обидва, інакше результат біт 0.x^y

Побітовий оператор НЕ



~Побітово НІ

Інвертує окремі біти.

рядок java в логічний
~x

Python Порозрядний правий зсув

>>Порозрядний зсув вправо

Значення лівого операнда зсувається вправо на кількість бітів

задається правим операндом.

x>>

Python Порозрядний лівий зсув

<<Порозрядний зсув вліво

Значення лівого операнда зсувається вліво на кількість бітів

задається правим операндом.

x<<

Давайте розберемося з кожним оператором окремо.

Порозрядний оператор І

The Python Побітове І (&) Оператор приймає два бітові шаблони однакової довжини як параметри. Порівнюються дворозрядні цілі числа. Якщо біти в порівнюваних позиціях шаблонів бітів дорівнюють 1, то результуючий біт дорівнює 1. Якщо ні, він дорівнює 0.

приклад: Візьміть два бітові значення X і Y, де X = 7= (111)2і Y = 4 = (100)2. Візьміть побітово і обидва X і y

Примітка: Тут (111)2представляють двійкове число.

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

Вихід

a & b = 0>

Побітовий оператор АБО

The Python Побітове АБО (|) Оператор бере дві еквівалентні довжини бітів як межі; якщо два біти у позиції спостереження дорівнюють 0, наступний біт дорівнює нулю. Якщо ні, це 1.

приклад: Візьміть два бітові значення X і Y, де X = 7= (111)2і Y = 4 = (100)2. Виконайте побітове АБО обох X, Y

правила іменування java

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

Вихід

a | b = 14>

Побітовий оператор XOR

The Побітовий оператор XOR (^) Python також відомий як оператор виключного АБО, використовується для виконання операції XOR над двома операндами. XOR означає виняткове або, і повертає істину тоді і тільки тоді, коли точно один із операндів є істинним. У контексті побітових операцій він порівнює відповідні біти двох операндів. Якщо біти різні, повертається 1; інакше повертає 0.

приклад: Візьміть два бітові значення X і Y, де X = 7= (111)2 і Y = 4 = (100)2. Візьміть побітово і X і Y

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

Вихід

a ^ b = 14>

Побітовий оператор НЕ

Попередні три порозрядні оператори є двійковими операторами, для функціонування яких потрібні два операнди. Однак, на відміну від інших, цей оператор оперує лише одним операндом.

The Побітовий оператор Python Not (~). працює з одним значенням і повертає його доповнення. Це означає, що він перемикає всі біти в значенні, перетворюючи 0 бітів на 1 і 1 біт на 0, що призводить до доповнення одиниці до двійкового числа.

приклад : Візьміть два бітові значення X і Y, де X = 5= (101)2. Візьміть побітове НЕ від X.

isletter java

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

Вихід

c# містить рядок
~a = -11>

Порозрядний зсув

Ці оператори використовуються для зміщення бітів числа вліво або вправо, таким чином множачи або ділячи число на два відповідно. Їх можна використовувати, коли нам потрібно помножити або поділити число на два.

Python Порозрядний зсув вправо

Зміщує біти числа праворуч і заповнює 0 у пустотах зліва (заповнює 1 у випадку від’ємного числа). Подібний ефект, як ділення числа з деяким ступенем двійки.

  Example 1:   a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 Приклад 2: a = -10 = 1111 0110 (двійковий) 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)>

Вихід

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

Python Порозрядний зсув вліво

Зміщує біти числа ліворуч і в результаті заповнює 0 у пустотах справа. Ефект подібний до множення числа на деяку ступінь двійки.

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

Вихід:

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

Порозрядне перевантаження операторів

Перевантаження оператора означає надання розширеного значення за межі їх попередньо визначеного операційного значення. Наприклад, оператор + використовується для додавання двох цілих чисел, а також для з’єднання двох рядків і об’єднання двох списків. Це можливо, оскільки оператор «+» перевантажений класом int і str. Ви могли помітити, що той самий вбудований оператор або функція показує різну поведінку для об’єктів різних класів, це називається Перевантаження оператора .

Нижче наведено простий приклад побітового перевантаження оператора.

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('Має бути об'єктом класу Geek') def __invert__(self): print('Оператор інвертування перевантажено') return ~self.value # Код драйвера if __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a)<< b) print(a>> b) print(~a)>

Вихід:

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

Примітка: Щоб дізнатися більше про перевантаження операторів натисніть тут .