Oh, I get a different answer:
Code:
printf("Multiply %X * %X * %X = %X", 0x12221, 0x2637514, 0x3989601, multiply(multiply(0x12221, 0x2637514), 0x3989601));
---
Multiply 12221 * 2637514 * 3989601 = B1937794
Here is the multiply function, I know it works for small ints:
Code:
long long multiply(long long multiplier, long long multiplicand) {
long long product = 0;
while (multiplicand) {
if (multiplicand & 1) product = product + multiplier;
multiplier = (long long)(multiplier << 1);
multiplicand = (long long)(multiplicand >> 1);
/* These casts shouldn't be necessary anyway; do multiplier <<= 1; and multiplicand >>= 1; instead */
}
return product;
}