本文介绍了使用位运算符将两个整数相乘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用按位运算符将两个整数相乘?
How can I multipy two integers using bitwise operators?
我在此处找到了一个实现.有没有更好的实现乘法的方法?
I found an implementation here. Is there a better way of implementing multiplication?
例如:2 * 6 = 12必须使用按位运算符执行.
For example: 2 * 6 = 12 must be performed using bitwise operators.
注意:数字是任意的,而不是2的幂
推荐答案#include <stdio.h> int main(void) { int a, b, result; printf("Enter the numbers to be multiplied:"); scanf("%d%d", &a, &b); // a > b result = 0; while (b != 0) // Iterate the loop till b == 0 { if (b & 1) // Bitwise & of the value of b with 1 { result = result + a; // Add a to result if b is odd . } a <<= 1; // Left shifting the value contained in 'a' by 1 // Multiplies a by 2 for each loop b >>= 1; // Right shifting the value contained in 'b' by 1. } printf("Result: %d\n",result); }
来源
更多推荐
使用位运算符将两个整数相乘
发布评论