按位运算符 – 使用按位运算符乘以两个整数

如何使用按位运算符来增加两个整数?

我发现一个实现here.有更好的方法来实现乘法吗?

例如:2 * 6 = 12必须使用按位运算符执行。

注意:数字是任意的,而不是2的幂

#include<stdio.h>

main()
{
    int a, b, result;
    printf("\nEnter 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 & 01)               // Bitwise & of the value of b with 01
        {
            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("nResult:%d",result);
}

Source

http://stackoverflow.com/questions/4456442/multiplication-of-two-integers-using-bitwise-operators

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:按位运算符 – 使用按位运算符乘以两个整数