As we know that every number can be represented as sum(or difference) of powers of 2, therefore what we can do is represent the constant as a sum of powers of 2.
For this purpose we can use the bitwise left shift operator. When a number is bitwise left shifted it is multiplied by 2 for every bit shift.
For example, suppose we want to multiply a variable say “a” by 10 then what we can do is
a = a << 3 + a << 1;
The expression a << 3 multiplies a by 8 ans expression a<<1 multiplies it by 2.
So basically what we have here is a = a*8 + a*2 = a*10
Similarly for multiplying with 7 what we can do is
a = a<<3 - a; or a = a<<2 + a<<1 + a;
Both these statements multiply a by 7.
#include<iostream> using namespace std;
// Returns n * 7 int multiplyBySeven( int n)
{ // OR (n << 2) + (n << 1) + n
return (n << 3) - n;
} // Returns n * 12 int multiplyByTwelve( int n)
{ return (n << 3) + (n << 2);
} int main()
{ cout << multiplyBySeven(5) << endl;
cout << multiplyByTwelve(5) << endl;
return 0;
} |
class GFG {
// Returns n * 7
static int multiplyBySeven( int n)
{
// OR (n << 2) + (n << 1) + n
return (n << 3 ) - n;
}
// Returns n * 12
static int multiplyByTwelve( int n)
{
return (n << 3 ) + (n << 2 );
}
// Driver code
public static void main(String[] args)
{
System.out.println(multiplyBySeven( 5 ));
System.out.println(multiplyByTwelve( 5 ));
}
} // This code is contributed by Anant Agarwal. |
# Python3 program to Multiplying a # variable with a constant # Returns n * 7 def multiplyBySeven(n):
# OR (n << 2) + (n << 1) + n
return (n << 3 ) - n
# Returns n * 12 def multiplyByTwelve(n):
return (n << 3 ) + (n << 2 )
# Driver code print (multiplyBySeven( 5 ))
print (multiplyByTwelve( 5 ))
# This code is contributed by Anant Agarwal. |
// C# program to Multiplying a // variable with a constant using System;
class GFG
{ // Returns n * 7
static int multiplyBySeven( int n)
{
// OR (n << 2) + (n << 1) + n
return (n << 3) - n;
}
// Returns n * 12
static int multiplyByTwelve( int n)
{
return (n << 3) + (n << 2);
}
// Driver code
public static void Main()
{
Console.WriteLine(multiplyBySeven(5));
Console.WriteLine(multiplyByTwelve(5));
}
} // This code is contributed by Anant Agarwal. |
<?php // PHP program of multiply operator // Returns n * 7 function multiplyBySeven( $n )
{ return ( $n << 3) - $n ;
} // Returns n * 12 function multiplyByTwelve( $n )
{ return ( $n << 3) + ( $n << 2);
} // Driver Code echo multiplyBySeven(5), "\n" ;
echo multiplyByTwelve(5), "\n" ;
// This code is contributed by Ajit ?> |
<script> // Python3 program to Multiplying a // variable with a constant // Returns n * 7 function multiplyBySeven(n)
{ // OR (n << 2) + (n << 1) + n
return (n << 3) - n;
} // Returns n * 12 function multiplyByTwelve(n)
{ return (n << 3) + (n << 2);
} // Driver code document.write(multiplyBySeven(5) + "<br>" );
document.write(multiplyByTwelve(5) + "<br>" );
// This code is contributed by Surbhi Tyagi. </script> |
Output :
35 60
Time Complexity: O(1)
Auxiliary Space: O(1)
We just need to find the combination of powers of 2. Also, this comes really handy when we have a very large dataset and each one of them requires multiplication with the same constant as bitwise operators are faster as compared to mathematical operators.