在 C++ 中使用按位运算符乘以任何数字

在本教程中,我们将编写一个程序,使用按位运算符将给定的两个数字相乘。

该左移位(<<)算子被用于乘法,而右移位(>>)被用于分割。

两个数x, y的乘法可以写成x * y = (x * 2) * (y / 2)如果 y 是偶数,否则它等于x * y = (x * y) * (y / 2) + x。

因此,每当第二个数字变为奇数时,将第一个数字添加到结果中。让我们看看解决问题的步骤。

让我们看看解决问题的步骤。

  • 初始化两个数字。

  • 编写一个循环,直到第二个数字变为 0

    • 如果第二个数字是奇数,则将第一个数字添加到结果中。

    • 左移第一个数字 1 位。

    • 第二个数字右移 1 位。

示例

让我们看看代码。

#include <bits/stdc++.h>

using namespace std;

int multiplyTwoNumbers(int a, int b) {

   int result = 0;

   while (b > 0) {

      if (b & 1) {

         result += a;

         }

      a = a << 1;

      b = b >> 1;

   }

   return result;

}

int main() {

   cout << multiplyTwoNumbers(75, 4) << endl;

   cout << multiplyTwoNumbers(90, 9) << endl;

   cout << multiplyTwoNumbers(83, 66) << endl;

   return 0;

}

输出结果

如果你运行上面的代码,那么你会得到下面的结果。

300

810

5478

结论

如果您对本教程有任何疑问,请在评论部分提及。

以上是 在 C++ 中使用按位运算符乘以任何数字 的全部内容, 来源链接: utcz.com/z/338824.html

回到顶部