Beginner Level
Intermediate Level
Advanced Level
Introduction
Bitwise operators in Python programming language are a set of operators that manipulate the individual bits of a value. These operators are used to perform lowlevel operations with efficiency and precision. Learning the concepts of bitwise operators in Python can help programmers build highperformance, scalable programs, particularly in fields like machine learning, cryptography, and network programming. In this comprehensive tutorial, we will explore the fundamentals of bitwise operations in Python, their applications, and their syntax.
Table of Contents :
 What are Bitwise Operators?
 Different Bitwise operators in Python
 Bitwise and operator
 Bitwise or operator
 Bitwise xor operator
 Bitwise 1’s complement operator
 Bitwise leftshift operator
 Bitwise rightshift operator
What are Bitwise Operators?
 Bitwise operators are used to perform bitwise operations on integers.
 Integer values are first converted to binary (0s and 1s) before performing bitwise operations.
 This operator operates on operands bit by bit hence the name Bitwise.
 Bitwise operator returns the result in decimal format.
Different Bitwise operators in Python
 There are 6 bitwise operators in Python
 Bitwise and operator (&)
 Bitwise or operator ()
 Bitwise xor operator (^)
 Bitwise not operator (~)
 Bitwise leftshift operator (<<)
 Bitwise rightshift operator (>>)
Bitwise and operator in python '&' :
 Bitwise and operator is denoted by the ampersand sign
&
in Python.  It performs logical AND operation on individual bits of the integer operands.
 It converts an integer to equivalent binary value.
 Then it performs the AND operation on corresponding bits of the operands.
 Return value of bitwise and :
 it returns
True
if both the bits areTrue
.  it returns
False
if any one of the bit isFalse
.
 it returns
 Return value of bitwise and in terms of binary :
 it returns
1
if both the bits are1
.  it returns
0
if any one of the bits is0
.
 it returns
 It returns the final result as a decimal value.
 Example :
 Let us perform bitwise and
&
of two operands10
and22
.  First 10 is converted to binary i.e.
01010
.  Then 22 is converted to binary i.e.
10110
. and
operation is performed on corresponding bits of the two operands. 0 & 1 = 0
 1 & 0 = 0
 0 & 1 = 0
 1 & 1 = 1
 0 & 0 = 0
 Hence result =
00010
 The final result is converted back to decimal, therefore we get 2 as answer.
 Let us perform bitwise and
 Code Sample :
x = 10
y = 22
res = x & y
print(res)
# Output
# 2
Bitwise or operator in python '' :
 Bitwise or operator is denoted by the pipe symbol

in Python.  It performs logical OR operation on individual bits of the integer operands.
 It converts an integer to equivalent binary value.
 Then it performs the OR operation on corresponding bits of the operands.
 Return value of bitwise or :
 it returns
False
if both the bits areFalse
.  it returns
True
if any one of the bit isTrue
.
 it returns
 Return value of bitwise or in terms of binary :
 it returns
0
if both the bits are0
.  it returns
1
if any one of the bits is1
.
 it returns
 It returns the final result as a decimal value.
 Example :
 Let us perform bitwise or

of two operands10
and22
.  First 10 is converted to binary i.e.
01010
.  Then 22 is converted to binary i.e.
10110
. or
operation is performed on corresponding bits of the two operands. 0  1 = 1
 1  0 = 1
 0  1 = 1
 1  1 = 1
 0  0 = 0
 Hence result =
11110
 The final result is converted back to decimal, therefore we get 30 as answer.
 Let us perform bitwise or
 Code Sample :
x = 10
y = 22
res = x  y
print(res)
# Output
# 30
Bitwise xor operator in python '^' :
 Bitwise xor operator is denoted by the caret symbol
^
in Python.  It performs logical XOR operation on individual bits of the integer operands.
 The word XOR stands for exclusive or.
 XOR operation means that 
True
is returned only if one operand isFalse
and one operand isTrue
.
 It converts an integer to equivalent binary value.
 Then it performs the XOR operation on corresponding bits of the operands.
 Return value of bitwise xor :
 it returns
False
if both the bits areFalse
.  it returns
False
if both the bits areTrue
.  it returns
True
if any one of the bit isTrue
and one bit isFalse
.
 it returns
 Return value of bitwise or in terms of binary :
 it returns
0
if both the bits are0
.  it returns
0
if both the bits are1
.  it returns
1
if any one of the bits is1
and one bit is0
 it returns
 It returns the final result as a decimal value.
 Example :
 Let us perform bitwise xor
^
of two operands10
and22
.  First 10 is converted to binary i.e.
01010
.  Then 22 is converted to binary i.e.
10110
. xor
operation is performed on corresponding bits of the two operands. 0 ^ 1 = 1
 1 ^ 0 = 1
 0 ^ 1 = 1
 1 ^ 1 = 0
 0 ^ 0 = 0
 Hence result =
11100
 The final result is converted back to decimal, therefore we get 28 as answer.
 Let us perform bitwise xor
 Code Sample :
x = 10
y = 22
res = x ^ y
print(res)
# Output
# 28
Bitwise not operator in python '~' :

Bitwise not operator is denoted by the tilde symbol
~
in Python.  Bitwise not operator takes only one operand.
 It converts the integer operand to equivalent binary value.
 Then inverts each bit of the binary value.
 In other words it turns 0s to 1s and 1s to 0s.
 It returns the bitwise negation of the value as a result.

Example :

Let us perform bitwise not
~
of22
. 
First 22 is converted to binary i.e.
10110
. 
not
operation is performed on individual bits of the operand. ~1 = 0
 ~0 = 1
 ~1 = 0
 ~1 = 0
 ~0 = 1

Hence result =
01001
 The final result is converted back to decimal.

Let us perform bitwise not
 In case of NOT operator we get a different result from expected result.
 Instead of the expected (9)_{ 10 }we get a negative number 23.
 This is because of the way python stores integers.
 Python stores integers as signed integers.
 Code Sample :
y = 22
res = ~y
print(res)
# Output
# 23
Bitwise leftshift operator in python '<<' :
 Bitwise left shift operator takes two operands.
 first it converts operand1 to binary.
 Then it shifts the bits of operand1 to the left by the number of places specified by operand2.
 A gap is created at the right bits of operand1 due to shifting.
 This gap is filled with zeros.
 It returns the decimal representation of the resulting binary number.
 Change in value of a number on shifting the bits to the left 
 Shifting the bits of any number to the left by one place doubles its value.
 Shifting the bits of any number to the left by two places multiplies its value by 2^{ 2}.
 Shifting the bits of any number to the left by three places multiplies its value by 2^{ 3}.
n << k = n * 2^{ k }
 Example :
 Let us perform bitwise left shift
<<
with two operands5
and2
.  First 5 is converted to binary i.e.
101
.  bits of the binary number is shifted by
2
places as operand2 is 2  The gap created is filled with zeros.
 101 << 2 = 10100
 Hence result =
10100
 The final result is converted back to decimal, therefore we get 20 as answer.
 Let us perform bitwise left shift
 Code Sample :
x = 5
y = 2
res = x << y
print(res)
# Output
# 20
Bitwise rightshift operator in python '>>' :
 Bitwise right shift operator takes two operands.
 first it converts operand1 to binary.
 Then it shifts the bits of operand1 to the right by the number of places specified by operand2.
 A gap is created at the left bits of operand1 due to shifting.
 This gap is filled with zeros.
 The rightmost bits are always dropped.
 It returns the decimal representation of the resulting binary number.
 Change in value of a number on shifting the bits to the right 
 Shifting the bits of any number to the right by one place halves its value.
 Shifting the bits of any number to the right by two places divides its value by 2^{ 2}.
 Shifting the bits of any number to the right by three places divides its value by 2^{ 3}.
n >> k = n / 2^{ k }
 Example :
 Let us perform bitwise right shift
>>
with two operands50
and2
.  First 50 is converted to binary i.e.
110010
.  bits of the binary number is shifted by
2
places as operand2 is 2  The gap created is filled with zeros.
 110010 >> 2 = 001100
 Hence result =
001100
 The final result is converted back to decimal, therefore we get 12 as answer.
 Let us perform bitwise right shift
 Code Sample :
x = 50
y = 2
res = x >> y
print(res)
# Output
# 12
Prev. Tutorial : Identity operators
Next Tutorial : Operator Precedence