Binary Division

00:04 0 Comments A+ a-

Problem:
Divide two Binary Numbers
Solution:
#include <iostream>
using namespace std;
long diff( long a,long b);

int main ()
{
long long int num1,num2,temp=0,quotient=0;
int i=0;
//taking input
do
{
cout<<"Enter Dividend in Binary =";
cin>>num1;
cout<<"Enter Divisor in Binary=";
cin>>num2;
if (num1<num2)
cout<<"Invalid Input! Kindly input correct values\n"<<endl;
} while (num1<num2);

int num[50];

while (num1!=0)
{
num[i]=num1%10;
num1/=10;
i++;
}
--i;


while(i>=0)
{
temp=(temp*10)+num[i];
while (temp<num2 && i>=0 )
{
quotient*=10;
i--;
if (i<0)
break;
temp=temp*10+num[i];
}

if (i>=0)
{
quotient=(quotient*10)+1;
temp=diff(temp,num2);
i--;
}
}

cout<<endl<<endl<<"Quotient = "<<quotient<<"\nRemainder = "<<temp<<endl ;
return 0;
}
long diff( long a,long b)

{
long int num1[50],i=0,num2[50];
while (a||b)
{
num1[i]=a%10;
num2[i++]=(b%10);
a=a/10;
b=b/10;
}
i--;

long int diff[50],j,temp;

//calculating Difference

for(temp=0;temp<=i;temp++)
{

if (num1[temp]-num2[temp]>=0)
diff[temp]=num1[temp]-num2[temp];
else
{
j=temp;
j++;
while(num1[j]!=1)
num1[j++]=1;
num1[j]=0;
diff[temp]=1;

}

}

long int ans=0;
while (i>=0)
ans=(ans*10)+diff[i--];

return ans;

}