# 算法设计：如何用移位运算符将两个数相乘？

## 本文概述

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

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

## C++

``````// CPP program to find multiplication
// of two number without use of
// multiplication operator
#include<bits/stdc++.h>
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

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

``````<?php
// PHP program to find multiplication
// of two number without use of
// multiplication operator

// Function for multiplication
function 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 ++;
\$m /= 2;
}
return \$ans ;
}

// Driver code
\$n = 20 ; \$m = 13;
echo multiply( \$n , \$m );

// This code is contributed by anuj_67.
?>``````

``260``

• 回顶