Sunday, 29 June 2014

Program For BOOT's Algorithm in C:--------


#include<stdio.h>
#include<conio.h>
#include<string.h>

int q1=0,n=0,count=0,Q[4],A[4],M[4],M2[4];
char b1[4],b2[4];

void input()
{
printf("\nEnter first 4-bit binary number: ");
gets(b1);
printf("\nEnter second 4-bit binary number: ");
gets(b2);
}

void initialize()
{
int a,b,i;
for(i=3;i>=0;i--)
{
a=(int)b1%10;
M[i]=a;
b1[i]/=10;
b=(int)b2%10;
Q[i]=b;
b2[i]/=10;
A[i]=0;
}
}

void add()
{
int i,a,b,c=0;
int sum[4];
for(i=3;i>=0;i--)
{
a=A[i];
b=M[i];
if((a+b+c)==0)
{
sum[i]=0;
c=0;
}
else if((a+b+c)==1)
{
sum[i]=1;
c=0;
}
else if((a+b+c)==2)
{
sum[i]=0;
c=1;
}
else if((a+b+c)==3)
{
sum[i]=1;
c=1;
}
}
for(i=0;i<4;i++)
{
A[i]=sum[i];
}
}

void twosComplement()
{
int i,b,a;
int flag=0;
for(i=0;i<n;i++)
{
if(M[i]==0) M2[i]=1;
else if(M[i]==1) M2[i]=0;
}
i=3;
while(flag==0)
{
b=M2[i];
flag=1;
if(a==1)
{
M2[i]=1;
flag=1;
break;
}
else if(a==2)
{
M2[i]=0;
i--;
}
}
}

void sub()
{
int i,a,b,c=0;
int sum[4];
twosComplement();
for(i=3;i>=0;i++)
{
a=A[i];
b=M2[i];
if((a+b+c)==0)
{
sum[i]=0;
c=0;
}
else if((a+b+c)==1)
{
sum[i]=1;
c=0;
}
else if((a+b+c)==2)
{
sum[i]=0;
c=1;
}
else if((a+b+c)==3)
{
sum[i]=1;
c=1;
}
}
for(i=0;i<n;i++) A[i]=sum[i];
}

void shift()
{
int i;
q1=Q[3];
for(i=3;i>0;i--)
{
Q[i]=Q[i-1];
}
Q[0]=A[3];
for(i=3;i>0;i--)
{
A[i]=A[i-1];
}
A[0]=A[i];
}

void display()
{
int i;
for(i=0;i<n;i++) printf("%d\t",A[i]);
for(i=0;i<n;i++) printf("%d\t%d\n",Q[i],q1);
}

void booth()
{
int i;
while(count!=0)
{
if(Q[3]==0 && q1==1)
{
add();
display();
}
else if(Q[3]==1 && q1==0)
{
sub();
display();
}
shift();
display();
printf("\nBooth's Algorithm: ");
}
printf("\nThe answer is: ");
for(i=0;i<n;i++) printf("%d",A[i]);
for(i=0;i<n;i++) printf("%d",Q[i]);
}

void main()
{
clrscr();
input();
initialize();
printf("\nA\tQ\tQ-1");
booth();
display();
printf("\n\n");

getch();
}

No comments:

Post a Comment