如何仅使用+和 - 运算符对两个int值进行乘法和除法

时间:2014-02-19 20:04:04

标签: c++

如何在不使用内置*和/操作数的情况下乘以和除以两个int值。 是否可以使用+和 - 操作数来实现这一目标?

int n1;
int n2;
int product;

cout << "Input 2 numbers you wish to multiply" << endl;
cin >> n1;
cin >> n2;

//perform multiplication operation here

return 0;

谢谢,

4 个答案:

答案 0 :(得分:5)

更多标准:

std::multiplies<int> x;
product = x.operator()(n1,n2);

还有std::divides

我发布了这个,因为你绝对不能在作业中使用它。 :)

答案 1 :(得分:4)

再次成为for循环

int total = 0;
for (int loop = 0; loop < n1; ++loop) total += n2;

小学数学发生了什么变化?

如果你也想要否定

int loop;
if (n1 < 0) for (loop = n1; loop > 0; loop++) total += n2;
else for (loop = 0; loop < n1; ++loop) total += n2;

答案 2 :(得分:1)

我认为这些数字的值是正数。你可以使用循环。例如

int n1;
int n2;
int product;

cout << "Input 2 numbers you wish to multiply" << endl;
cin >> n1;
cin >> n2;

//perform multiplication operation here

product = 0;

for ( int i = 0; i < n2; i++ ) product = product + n1; // or product += n1;

return 0;

或者你可以使用递归函数。例如(该函数适用于正数和负数)

int GetProduct( int n1, n2 )
{
  return n2 == 0 ? 0 : n1 + GetProduct( n1, n2 < 0 ? n2 + 1 : n2 - 1 );
}

product = GetProduct( n1, n2 );

答案 3 :(得分:0)

如果其中一个操作数是2的幂,那么你可以使用位移算子。

x << 1; 

将乘以2,

x << 2;

将乘以4等。