logo

Python Bitwise operatori

Operatori tiek izmantoti, lai veiktu darbības ar vērtībām un mainīgajiem. Šie ir īpašie simboli, kas veic aritmētiskos un loģiskos aprēķinus. Vērtība, ko izmanto operators, ir pazīstama kā operands.

Python Bitwise operatori

Python bitu operatori tiek izmantoti, lai veiktu bitu aprēķinus veseliem skaitļiem. Veselie skaitļi vispirms tiek pārveidoti par bināriem, un pēc tam tiek veiktas darbības ar katru bitu vai atbilstošo bitu pāri, tādēļ nosaukums ir bitu operatori. Pēc tam rezultāts tiek atgriezts decimālā formātā.



Piezīme: Python bitu operatori darbojas tikai ar veseliem skaitļiem.


OPERATORSVĀRDSAPRAKSTSSINTAKSE

Bitu UN operators



&Bitu UNRezultāta bits 1, ja abi operanda biti ir 1; pretējā gadījumā rezultātu bits 0.x un y

Bitu VAI operators

|Bitu virzienā VAIRezultāta bits 1, ja kāds no operanda bitiem ir 1; pretējā gadījumā rezultātu bits 0.x | un

Bitu XOR operators

^Bitu XORRezultāta bits 1, ja kāds no operanda bitiem ir 1, bet ne abi, pretējā gadījumā rezultātu bits ir 0.x^y

Bitwise NAV operators



saraksts uz java
~Bitu veidā NAV

Invertē atsevišķus bitus.

~x

Python Bitu pa labi Shift

>>Bitu maiņa pa labi

Kreisā operanda vērtība tiek pārvietota uz labo pusi par bitu skaitu

ko nosaka pareizais operands.

x>>

Python Bitwise Left Shift

<<Bitu pa kreisi nobīde

Kreisā operanda vērtība tiek pārvietota uz kreiso pusi par bitu skaitu

ko nosaka pareizais operands.

x<<

Izpratīsim katru operatoru pa vienam.

Bitwise UN operators

The Python Bitwise UN (&) operators kā parametrus izmanto divus vienāda garuma bitu modeļus. Tiek salīdzināti divu bitu veseli skaitļi. Ja biti bitu modeļu salīdzinātajās pozīcijās ir 1, tad iegūtais bits ir 1. Ja nē, tas ir 0.

Piemērs: Ņemiet divas bitu vērtības X un Y, kur X = 7 = (111)2un Y = 4 = (100)2. Paņemiet Bitwise un abus X un y

Piezīme: Šeit, (111)2apzīmē bināro skaitli.

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

Izvade

a & b = 0>

Bitu virzienā VAI operators

The Python Bitwise VAI (|) Operators kā robežas izmanto divus līdzvērtīga garuma bitu dizainus; ja divi biti apskatāmajā pozīcijā ir 0, nākamais bits ir nulle. Ja nē, tas ir 1.

Piemērs: Ņemiet divas bitu vērtības X un Y, kur X = 7 = (111)2un Y = 4 = (100)2. Paņemiet bitu virzienā VAI abus X, Y

norobežotājs java
Python
a = 10 b = 4 # Print bitwise OR operation print('a | b =', a | b)>

Izvade

a | b = 14>

Bitu XOR operators

The Python Bitwise XOR (^) operators pazīstams arī kā ekskluzīvais VAI operators, tiek izmantots, lai veiktu XOR operāciju diviem operandiem. XOR apzīmē ekskluzīvu vai, un tas atgriež patiesu tad un tikai tad, ja tieši viens no operandiem ir patiess. Bitu operāciju kontekstā tas salīdzina atbilstošos divu operandu bitus. Ja biti atšķiras, tas atgriež 1; pretējā gadījumā tas atgriež 0.

Piemērs: Ņemiet divas bitu vērtības X un Y, kur X = 7= (111)2 un Y = 4 = (100)2. Paņemiet Bitwise un X un Y

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

Izvade

a ^ b = 14>

Bitwise NAV operators

Iepriekšējie trīs bitu operatori ir bināri operatori, kuru darbībai ir nepieciešami divi operandi. Tomēr atšķirībā no citiem šis operators darbojas tikai ar vienu operandu.

The Python Bitwise Nav (~) operators darbojas ar vienu vērtību un atgriež tās papildinājumu. Tas nozīmē, ka tas pārslēdz visus vērtības bitus, pārveidojot 0 bitus par 1 un 1 bitu par 0, kā rezultātā tiek iegūts binārā skaitļa viens papildinājums.

Piemērs : ņem divas bitu vērtības X un Y, kur X = 5= (101)2 . Ņemiet bitu virzienā, NEVIS no X.

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

Izvade

dharmendra vecums
~a = -11>

Bitu maiņa

Šos operatorus izmanto, lai pārvietotu skaitļa bitus pa kreisi vai pa labi, tādējādi attiecīgi reizinot vai dalot skaitli ar divi. Tos var izmantot, ja mums ir jāreizina vai jādala skaitlis ar divi.

Python Bitu pa labi Shift

Rezultātā skaitļa biti tiek pārvietoti pa labi un tukšos laukumus aizpilda 0 (aizpilda 1, ja skaitlis ir negatīvs). Līdzīgs efekts kā skaitļa dalīšanai ar kādu divu pakāpju.

  Example 1:   a = 10 = 0000 1010 (Binary) a>> 1 = 0000 0101 = 5 2. piemērs: a = -10 = 1111 0110 (binārs) 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)>> 

Izvade

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

Python Bitu pa kreisi Shift

Nobīda skaitļa bitus pa kreisi un aizpilda 0 tukšumos pa labi. Līdzīgs efekts kā skaitļa reizināšanai ar kādu divu jaudu.

a = 5 b = -10 # print bitwise left shift operator print('a << 1 =', a << 1) print('b << 1 =', b << 1)>

Izvade:

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

Bitu operatora pārslodze

Operatora pārslodze nozīmē paplašinātu nozīmi ārpus to iepriekš noteiktās darbības nozīmes. Piemēram, operators + tiek izmantots, lai pievienotu divus veselus skaitļus, kā arī apvienotu divas virknes un sapludinātu divus sarakstus. Tas ir sasniedzams, jo operatoru “+” pārslogo int un str klase. Jūs, iespējams, pamanījāt, ka viens un tas pats iebūvētais operators vai funkcija parāda atšķirīgu uzvedību dažādu klašu objektiem, to sauc par Operatora pārslodze .

Zemāk ir vienkāršs Bitwise operatora pārslodzes piemērs.

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('Jābūt klases Geek objektam') def __invert__(self): print('Invert operators overloaded') return ~self.value # Draivera kods, ja __name__ == '__main__': a = Geek(10) b = Geek(12) print(a & b) print(a | b) print(a ^ b) print(a)<< b) print(a>> b) drukāt(~a)>> 

Izvade:

Piezīme: Lai uzzinātu vairāk par operatora pārslodzi noklikšķiniet šeit .