Multiplying a variable with a constant without using multiplication operator

Last Updated : 5 Nov, 2021

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.
 

C++
#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;
}
Java
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
# 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#
// 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
// 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
?>
JavaScript
<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.
 

Comment