Related Articles

# Multiplication of two numbers with shift operator

• Difficulty Level : Medium
• Last Updated : 05 Mar, 2021

For any given two numbers n and m, you have to find n*m without using any multiplication operator.
Examples :

```Input: n = 25 , m = 13
Output: 325

Input: n = 50 , m = 16
Output: 800```

We can solve this problem with the shift operator. The idea is based on the fact that every number can be represented in binary form. And multiplication with a number is equivalent to multiplication with powers of 2. Powers of 2 can be obtained using left shift operator.
Check for every set bit in the binary representation of m and for every set bit left shift n, count times where count if place value of the set bit of m and add that value to answer.

## C++

 `// CPP program to find multiplication``// of two number without use of``// multiplication operator``#include``using` `namespace` `std;` `// Function for multiplication``int` `multiply(``int` `n, ``int` `m)``{ ``    ``int` `ans = 0, count = 0;``    ``while` `(m)``    ``{``        ``// check for set bit and left``        ``// shift n, count times``        ``if` `(m % 2 == 1)             ``            ``ans += n << count;` `        ``// increment of place value (count)``        ``count++;``        ``m /= 2;``    ``}``    ``return` `ans;``}` `// Driver code``int` `main()``{``    ``int` `n = 20 , m = 13;``    ``cout << multiply(n, m);``    ``return` `0;``}`

## Java

 `// Java program to find multiplication``// of two number without use of``// multiplication operator``class` `GFG``{``    ` `    ``// Function for multiplication``    ``static` `int` `multiply(``int` `n, ``int` `m)``    ``{``        ``int` `ans = ``0``, count = ``0``;``        ``while` `(m > ``0``)``        ``{``            ``// check for set bit and left``            ``// shift n, count times``            ``if` `(m % ``2` `== ``1``)            ``                ``ans += n << count;``    ` `            ``// increment of place``            ``// value (count)``            ``count++;``            ``m /= ``2``;``        ``}``        ` `        ``return` `ans;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``int` `n = ``20``, m = ``13``;``        ` `        ``System.out.print( multiply(n, m) );``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# python 3 program to find multiplication``# of two number without use of``# multiplication operator` `# Function for multiplication``def` `multiply(n, m):``    ``ans ``=` `0``    ``count ``=` `0``    ``while` `(m):``        ``# check for set bit and left``        ``# shift n, count times``        ``if` `(m ``%` `2` `=``=` `1``):``            ``ans ``+``=` `n << count` `        ``# increment of place value (count)``        ``count ``+``=` `1``        ``m ``=` `int``(m``/``2``)` `    ``return` `ans` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `20``    ``m ``=` `13``    ``print``(multiply(n, m))``    ` `# This code is contributed by``# Ssanjit_Prasad`

## C#

 `// C# program to find multiplication``// of two number without use of``// multiplication operator``using` `System;` `class` `GFG``{``    ` `    ``// Function for multiplication``    ``static` `int` `multiply(``int` `n, ``int` `m)``    ``{``        ``int` `ans = 0, count = 0;``        ``while` `(m > 0)``        ``{``            ``// check for set bit and left``            ``// shift n, count times``            ``if` `(m % 2 == 1)        ``                ``ans += n << count;``    ` `            ``// increment of place``            ``// value (count)``            ``count++;``            ``m /= 2;``        ``}``        ` `        ``return` `ans;``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `Main ()``    ``{``        ``int` `n = 20, m = 13;``        ` `        ``Console.WriteLine( multiply(n, m) );``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output :

`260`

Time Complexity : O(log n)
Related Article:
Russian Peasant (Multiply two numbers using bitwise operators)