比特明智的乘法问题

时间:2014-09-29 23:37:47

标签: c bitwise-operators multiplication

我有一个编程赋值,将2个整数作为十六进制写入一个函数乘以然后使用逐位运算。它适用于我能想到的每个数字组合,但是当我输入分配表中给出的2个示例时,我的答案很接近但不准确。我希望得到一些帮助,为什么它没有得到正确的答案。我的功能发布在下面,我得到的答案与我应该得到的答案在下面。感谢先进的任何见解。

long unsigned product = 0;
int count = 0;

while(b != 0){
    if((b & 0x01) != 0){
        product = BinaryAdd(product, a); //BinaryAdd simply adds two numbers -- from previous assignment
    }
    a = a << 1;
    b = b >> 1;
}

return product;

我得到:Product = 0x000000009a431064 As unsigned = 2588086372

我应该得到什么:Product = 0x000000039A431064 As unsigned = 15472988260

0 个答案:

没有答案