在 C++ 中使用按位运算符乘以任何数字
在本教程中,我们将编写一个程序,使用按位运算符将给定的两个数字相乘。
该左移位(<<)算子被用于乘法,而右移位(>>)被用于分割。
两个数x,y的乘法可以写成x*y=(x*2)*(y/2)如果y是偶数,否则它等于x*y=(x*y)*(y/2)+x。
因此,每当第二个数字变为奇数时,将第一个数字添加到结果中。让我们看看解决问题的步骤。
让我们看看解决问题的步骤。
初始化两个数字。
编写一个循环,直到第二个数字变为0
如果第二个数字是奇数,则将第一个数字添加到结果中。
左移第一个数字1位。
第二个数字右移1位。
示例
让我们看看代码。
#include输出结果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
结论
如果您对本教程有任何疑问,请在评论部分提及。