被除数=除数*(2^0+2^1+2^2+2^3+2^4+2^5........2^n);
先求n的值
while(被除数>除数*2^n)
n++;
n--;
if(被除数>=除数*2^n;){
被除数-=除数*2^n;
商+=1<<2^n;
}
#include<iostream>
using namespace std;
int divide(int dividen, int diviso) {
cout<<"dividen : "<<dividen<<endl;
cout<<"diviso : "<<diviso<<endl;
if(!diviso)
return -1000000;
long int dividend=dividen,divisor=diviso;
int flag=(dividend<0&&divisor<0)||(dividend>0&&divisor>0);
if(!flag)
{
if(dividend<0)
dividend=0-dividend;
else
divisor=0-divisor;
}
else
{
if(dividend<0){
dividend=0-dividend;
divisor=0-divisor;
}
}
int max_wei=0;
int text_wei=divisor;
while(dividend>text_wei)
{
max_wei++;
text_wei<<=1;
}
max_wei--;
cout<<"max_wei :"<<max_wei<<endl;
int rest=0;
while(max_wei>=0){
if(dividend>(divisor<<max_wei)){
dividend-=(divisor<<max_wei);
rest+=(1<<max_wei);
max_wei--;
continue;
}
max_wei--;
}
if(flag)
return rest;
return 0-rest;
}
int main()
{
// for(;;){
int i,j;
cin>>i>>j;
cout<<divide(i,j)<<endl;
// }
return 1;
}