我希望有人能够帮助我。
如果我有两个正数或一个正数和一个负数,我有以下算法。但是,如果两个数字都是负数,它就不起作用。
有人可以解释我怎么可能吗?
void sum (int p, int q) {
int sum, carry;
carry = 1;
while (carry > 0) {
sum = p ^ q;
carry = p & q;
carry = carry << 1;
p = sum;
q = carry;
}
p = p << 1;
p = p >> 1;
printf("The result equals to %d", p);
}
在此先感谢大家:)