#include <stdio.h>
#define INT_MAX (0xffffffff)
static int IntegerDivide(const int x, const int y)
{
unsigned int multi;
int result = 0;
unsigned int left_num, right_num;
if(y == 0)
return INT_MAX;
left_num = (x>0)?x:-x;
right_num = (y>0)?y:-y;
while(left_num > right_num)
{
multi = 0;
while((right_num << multi) <= (left_num>>1))
{
multi++;
}
result += (1<<multi);
left_num -= (right_num << multi);
printf("debug left=%d, right=%d, multi=%d\n", left_num, right_num, multi);
}
if((x>0 && y<0) || (x<0 && y>0))
result = -result;
printf("result = %d\n", result);
return result;
}
int main()
{
int x = 0, y = -1;
int result = x/y;
if(result == IntegerDivide(x,y))
{
printf("pass\n");
}
return 0;
}