我的代码在下面,它适用于大多数输入,但我注意到对于非常大的数字(特定示例为 2147483647 除以 2),我遇到分段错误并且程序停止工作。请注意, badd() 和 bsub() 函数分别只是简单地加或减整数。
unsigned int bdiv(unsigned int dividend, unsigned int divisor){
int quotient = 1;
if (divisor == dividend)
{
return 1;
}
else if (dividend < divisor)
{ return -1; }// this represents dividing by zero
quotient = badd(quotient, bdiv(bsub(dividend, divisor), divisor));
return quotient;
}
我的 bmult() 函数也有点麻烦。它适用于某些值,但程序对于诸如 -8192 乘以 3 之类的值会失败。还列出了此函数。提前感谢您的帮助。对此,我真的非常感激!
int bmult(int x,int y){
int total=0;
/*for (i = 31; i >= 0; i--)
{
total = total << 1;
if(y&1 ==1)
total = badd(total,x);
}
return total;*/
while (x != 0)
{
if ((x&1) != 0)
{
total = badd(total, y);
}
y <<= 1;
x >>= 1;
}
return total;
}