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();
}
#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