Given two numbers the task is to print the number of bits to be flipped to convert the given number to the other number.
Examples:
Example1:
Input:
given the first number = 12 given the second number = 9
Output:
Binary representations of the given two numbers are : 12 = 1100 9 = 1001 The total number of bits to be flipped = 2
- Python Program to Find Position of Rightmost Set Bit
- Python decimal Module with Examples
- Python Program to Count Set Bits in a Number
Example2:
Input:
given the first number = 59 given the second number = 3
Output:
Binary representations of the given two numbers are : 59 = 111011 3 = 11 The total number of bits to be flipped = 3
Program to Find the Total Number of Bits Needed to be Flipped
Below is the full approach to print the number of bits to be flipped to convert the given number to the other number.
- Algorithm
- Using XOR Operator and Count Variable(Static Input)
- Using XOR Operator and Count Variable(User Input separated by spaces)
- Using XOR Operator and Built-in Count function(Static Input)
- Using XOR Operator and Built-in Count function(User Input Separated by Newline)
Our website provided core java programs examples with output aid beginners and expert coders to test their knowledge gap and learn accordingly.
1)Algorithm
This problem can be rephrased as determining the number of dissimilar corresponding bits in firstnumber and secondnumber. And the bitwise XOR operator () can assist us in determining this. The XOR of two bits returns 1 only if the bits are not the same. As a result, our solution consists of two easy steps:
1. Determine the firstnumber and secondnumber’s bitwise XOR.
2. Determine the number of set bits in the result.
1. Calculate XOR of firstnumber and secondnumber.
firstnumber _xor_secondnumber = firstnumber ^ secondnumber
2. Count the set bits in the above
calculated XOR result.
countSetBits ( firstnumber _xor_secondnumber)
2)Using XOR Operator and Count Variable(Static Input)
Approach:
- Give the two numbers as static input and store them in two separate variables.
- Pass the given two numbers as arguments to the countFlipbits function which calculates the total number of bits to be flipped to convert one number into another.
- Calculate the xor value of the two numbers and store it in a result say resultnum.
- Use the while loop to calculate the total number of set bits in the resultnum.
- Return the number of set bits which is the result (number of bits to be flipped).
- Print the result.
- The Exit of the Program.
Below is the implementation:
# function which accepts the two numbers as arguments # and return the number of bits to be flipped def countFlipbits(firstnumber, secondnumber): # Calculate the xor value of the two numbers and store it in a result say resultnum. resultnum = firstnumber ^ secondnumber # Use the while loop to calculate the total number of set bits in the resultnum. setbitCounter = 0 while resultnum: resultnum = resultnum & (resultnum - 1) setbitCounter = setbitCounter + 1 # Return the number of set bits which is the result (number of bits to be flipped). return setbitCounter # Driver Code # Give the two numbers as static input and store them in two separate variables. firstnumber = 12 secondnumber = 9 # Pass the given two numbers as arguments to the ( function which calculates the total number # of bits to be flipped to convert one number into another. print('Binary representations of the given two numbers are :') print(firstnumber, '=', bin(firstnumber)[2:]) print(secondnumber, '=', bin(secondnumber)[2:]) print('The total number of bits to be flipped =', countFlipbits(firstnumber, secondnumber))
Output:
Binary representations of the given two numbers are : 12 = 1100 9 = 1001 The total number of bits to be flipped = 2
3)Using XOR Operator and Count Variable(User Input separated by spaces)
Approach:
- Give the two numbers as user input using int, map(), and split() functions.
- Store them in two separate variables.
- Pass the given two numbers as arguments to the countFlipbits function which calculates the total number of bits to be flipped to convert one number into another.
- Calculate the xor value of the two numbers and store it in a result say resultnum.
- Use the while loop to calculate the total number of set bits in the resultnum.
- Return the number of set bits which is the result (number of bits to be flipped).
- Print the result.
- The Exit of the Program.
Below is the implementation:
# function which accepts the two numbers as arguments # and return the number of bits to be flipped def countFlipbits(firstnumber, secondnumber): # Calculate the xor value of the two numbers and store it in a result say resultnum. resultnum = firstnumber ^ secondnumber # Use the while loop to calculate the total number of set bits in the resultnum. setbitCounter = 0 while resultnum: resultnum = resultnum & (resultnum - 1) setbitCounter = setbitCounter + 1 # Return the number of set bits which is the result (number of bits to be flipped). return setbitCounter # Driver Code # Give the two numbers as user input using int, map(), and split() functions. # Store them in two separate variables. firstnumber, secondnumber = map(int, input( 'Enter some random two numbers separated by spaces = ').split()) # Pass the given two numbers as arguments to the ( function which calculates the total number # of bits to be flipped to convert one number into another. print('Binary representations of the given two numbers are :') print(firstnumber, '=', bin(firstnumber)[2:]) print(secondnumber, '=', bin(secondnumber)[2:]) print('The total number of bits to be flipped =', countFlipbits(firstnumber, secondnumber))
Output:
Enter some random two numbers separated by spaces = 54 96 Binary representations of the given two numbers are : 54 = 110110 96 = 1100000 The total number of bits to be flipped = 4
4)Using XOR Operator and Built-in Count function(Static Input)
Approach:
- Give the two numbers as static input and store them in two separate variables.
- Pass the given two numbers as arguments to the countFlipbits function which calculates the total number of bits to be flipped to convert one number into another.
- Calculate the xor value of the two numbers and store it in a result say resultnum.
- Convert this resultnum to binary and calculate the total number of sets bits in it using the count() function.
- The Exit of the Program.
Below is the implementation:
# function which accepts the two numbers as arguments # and return the number of bits to be flipped def countFlipbits(firstnumber, secondnumber): # Calculate the xor value of the two numbers and store it in a result say resultnum. resultnum = firstnumber ^ secondnumber # Convert this resultnum to binary and calculate the total # number of sets bits in it using the count() function. binNumber = bin(resultnum) setbitCounter = binNumber.count('1') return setbitCounter # Driver Code # Driver Code # Give the two numbers as static input and store them in two separate variables. firstnumber = 18 secondnumber = 68 # Pass the given two numbers as arguments to the ( function which calculates the total number # of bits to be flipped to convert one number into another. print('Binary representations of the given two numbers are :') print(firstnumber, '=', bin(firstnumber)[2:]) print(secondnumber, '=', bin(secondnumber)[2:]) print('The total number of bits to be flipped =', countFlipbits(firstnumber, secondnumber))
Output:
Binary representations of the given two numbers are : 18 = 10010 68 = 1000100 The total number of bits to be flipped = 4
5)Using XOR Operator and Built-in Count function(User Input Separated by Newline)
Approach:
- Give the first number as user input using int(input()) and store it in a variable.
- Give the second number as user input using int(input()) and store it in another variable.
- Pass the given two numbers as arguments to the countFlipbits function which calculates the total number of bits to be flipped to convert one number into another.
- Calculate the xor value of the two numbers and store it in a result say resultnum.
- Convert this resultnum to binary and calculate the total number of sets bits in it using the count() function.
- The Exit of the Program.
Below is the implementation:
# function which accepts the two numbers as arguments # and return the number of bits to be flipped def countFlipbits(firstnumber, secondnumber): # Calculate the xor value of the two numbers and store it in a result say resultnum. resultnum = firstnumber ^ secondnumber # Convert this resultnum to binary and calculate the total # number of sets bits in it using the count() function. binNumber = bin(resultnum) setbitCounter = binNumber.count('1') return setbitCounter # Driver Code # Driver Code # Give the first number as user input using int(input()) and store it in a variable. firstnumber = int(input('Enter first random number = ')) # Give the second number as user input using int(input()) and store it in another variable. secondnumber = int(input('Enter second random number = ')) # Pass the given two numbers as arguments to the ( function which calculates the total number # of bits to be flipped to convert one number into another. print('Binary representations of the given two numbers are :') print(firstnumber, '=', bin(firstnumber)[2:]) print(secondnumber, '=', bin(secondnumber)[2:]) print('The total number of bits to be flipped =', countFlipbits(firstnumber, secondnumber))
Output:
Enter first random number = 59 Enter second random number = 3 Binary representations of the given two numbers are : 59 = 111011 3 = 11 The total number of bits to be flipped = 3
Related Programs:
- Python Program to Find the Factors of a Number
- Python Program to Find the Power of a Number Using Recursion
- Python Program to Find the Sum of the Digits of the Number Recursively
- Python Program to Find all Numbers in a Range which are Perfect Squares and Sum of all Digits in the Number is Less than 10
- Python Program to Find the Total Sum of a Nested List Using Recursion
- Python Program to Find the Sum of Natural Numbers
- Python Program to Compute the Power of a Number