# 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)