我有一个编程赋值,将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