COA Lab Manual COMP
COA Lab Manual COMP
//**************Decimal to Binary*************
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int a,n=0,q,rem,x[20],i;
cout<<"Enter the Decimal number:";
cin>>a;
while(a!=0)
{
rem=a%2;
x[n]=rem;
a=a/2;
n=n+1;
}
cout<<"The Binary conversion is:";
for(i=n-1;i>=0;i--)
cout<<x[i];
getch();
}
OUTPUT
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<process.h>
#include<stdlib.h>
void complement(char *a);
void main()
{
char a[16];
int i;
clrscr();
cout<<"Enter the binary no :";
cin>>a;
for(i=0;a[i]!='\0';i++)
{
if(a[i]!='0' && a[i]!='1')
{
cout<<"the no entered is not a binary no,entre the correct no";
exit(0);
}
}
complement(a);
getch();
}
void complement(char *a)
{
int l,i,c=0;
char b[16];
l=strlen(a);
for(i=l-1;i>=0;i--)
{
if(a[i]=='0')
b[i]='1';
else
b[i]='0';
}
for(i=l-1;i>0;i--)
{
if(i==l-1)
{
if(b[i]=='0')
b[i]='1';
else
{
b[i]='0';
c=1;
}
}
else
{
if(c==1 && b[i]=='0')
{
b[i]='1';
c=0;
}
else if(c==1 && b[i]=='1')
{
b[i]='0';
c=1;
}
}
}
b[l]='\0';
cout<<"The 2's comp is"<<b;
}
OUTPUT
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<process.h>
#include<stdlib.h>
void main()
{
int a,b,c,carry=0,sum=0,ch;
clrscr();
do
{
cout<<"\noperation\n 1:half adder\n 2:full adder\n 3:exit";
cout<<"\n enter ur option:\t";
cin>>ch;
switch(ch)
{
case 1: cout<<"enter value of a & b\n";
cin>>a>>b;
if((a==0||a==1)&&(b==0||b==1))
{
sum=a^b;
carry=a&b;
cout<<"sum="<<sum<<"carry="<<carry;
}
else
cout<<"invalid input\n";
break;
case 2: cout<<"enter the values of a & b & c\n";
cin>>a>>b>>c;
if((a==1||a==0)&&(b==0||b==1) && (c==0||c==1))
{
sum=a^b^c;
carry=a&b|b&c|a&c;
cout<<"sum="<<sum<<"carry="<<carry;
}
else
cout<<"invalid input\n";
break;
case 3: exit(0);
}
}
while(ch<3);
getch();
}
OUTPUT
Operation
1:half adder
2:full adder
3:exit
enter ur option: 1
enter value of a & b
0
1
Sum=1 carry=0
Operation
1:half adder
2:full adder
3:exit
enter ur option: 2
enter value of a & b & c
1
1
1
Sum=1 carry=1
Operation
1:half adder
2:full adder
3:exit
enter ur option:3
PRACTICAL NO:-4
#include<iostream.h>
#include<conio.h>
#define HIGH 1
#define LOW 0
class binary
{
public:
long c[8];
long CARRY;
binary()
{
CARRY=0;
int i;
//for(int i=0;i<8;i++)//
c[i]=0;
}
};
int main()
{
binary bin;
long i,n,a,b,k,m,A;
clrscr();
n=7;
cout<<"\nEnter the value of a&b in Decimal :";
cin>>a>>b;
for(i=0;i<8;i++)
{
k=((a>>i)&1);
m=((b>>i)&1);
if(!(bin.CARRY^HIGH))
{
bin.c[n]=((bin.CARRY^k)^m);
if(!(k^HIGH)||!(m^HIGH))
bin.CARRY=1;
else
bin.CARRY=0;
}
else if(!(k^HIGH) && !(m^HIGH))
{
bin.CARRY=1;
bin.c[n]=k^m;
}
else if(!(k^LOW)||!(m^LOW))
{
if(!(bin.CARRY^HIGH))
{
bin.c[n]=((bin.CARRY^k)^m);
bin.CARRY=0;
}
else
bin.c[n]=k^m;
}
n--;
}
cout<<"Addition of Two Binary No. is:";
for(i=0;i<8;i++)
cout<<bin.c[i];
getch();
return 0;
}
OUTPUT
#define max 16
void main()
{
int i,j,a[max],b[max],q[max],x,y;
clrscr();
cout<<"\n _________________________________________________";
cout<<"\n|\t\tUnsigned Multiplication\n";
cout<<"|----------------------------------------------------------------------------";
cout<<"\n|Enter The First No\t: ";
cin>>x;
cout<<"|Enter The Second No\t: ";
cin>>y;
cout<<"|_________________________________________________";
while(x>0 && y>0)
{
convert2(0,a);
cout<<"\n\nTHE 16-bit BINARY FORM OF 0\t: ";
for(i=max-1;i>=0;i--)
cout<<a[i];
convert2(x,b);
cout<<"\nTHE 16-bit BINARY FORM OF " <<x<<"\t: ";
for(i=max-1;i>=0;i--)
cout<<b[i];
convert2(y,q);
cout<<"\nTHE 16-bit BINARY FORM OF "<<y<<"\t: ";
for(i=max-1;i>=0;i--)
cout<<q[i];
shift(a,b,q);
cout<<"\n\n\tCalculating "<<x<< "*"<<y;
cout<<"In 16-bit BINARY FORM :\n\n\t";
for(i=max-1;i>=0;i--)
cout<<a[i];
cout<<"\n\t";
for(j=max-1;j>=0;j--)
cout<<q[j];
convert1(a,q);
x = -1;
getch();
}
}
/***************** OUTPUT ********************
_________________________________________________
| Unsigned Multiplication
|-------------------------------------------------------------------------
|Enter The First No : 56
|Enter The Second No : 12
|_________________________________________________
0000000000000000
0000001010100000
//***************Booth’s Algorithm***************
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<math.h>
int get(int a)
{
char ch='B';
int flag=0;
if(a==1)
ch='A';
do
{
cout<<"| ENTER VALUE OF"<<" " <<ch<<":";
cin>>a;
if(a<0)
{
a=a*-1;
flag=1;
}
if(9<=a)
cout<<"|\n\t!INVALID NUMBER.ENTER VALUE(-9<A<9)!";
}
while(9<=a);
if(flag)
a=a*-1;
return(a);
}
void add(int*a,int*b)
{
int x,i,c=0;
for(i=3;i>=0;i--)
{
x=a[i];
a[i]=c^x^b[i];
if(((c==1)&&(x==1))||((x==1)&&(b[i]==1))||((b[i]==1)&&(c==1)))
c=1;
else
c=0;
}
}
void binary(int x,int *arr)
{
int i,p=x,c[4]={0,0,0,1};
for(i=0;i<4;i++)
arr[i]=0;
if(x<0)
x=x*-1;
i=3;
do
{
arr[i]=x%2;
x = x/2;
i--;
}while(x!=0);
if(p< 0)
{
for(i=0;i< 4;i++)
arr[i]=1-arr[i];
add(arr,c);
}
cout<<"\n\nTHE BINARY EQUIVALENT OF"<<" "<<p<<" "<<"IS :";
for(i=0;i< 4;i++)
cout<<arr[i];
}
void rshift(int x,int *y)
{
int i;
for(i=3;i>0;i--)
y[i] = y[i-1];
y[0] = x;
}
void main()
{
int q=0,i,j,a,b,A[4]={0,0,0,0},C[4]={0,0,0,1},C1[8]={0,0,0,0,0,0,0,1};
int s=0,z=0,Q[4],M[4],temp,temp1[4],ans[8],y,x=0,c=0;
clrscr();
cout<<"\n|----------------------------------------------------\n";
a = get(1);
b=get(0);
cout<<"\n|---------------------------------------------------\n";
binary(a,M);
binary(b,Q);
cout<<"\n\n---------------------------------------------------\n";
cout<<" OPERATION\t\t A\t Q\tQ'\t M";
cout<<"\n\n INITIAL\t\t";
for(i=0;i< 4;i++)
cout<<A[i];
cout<<"\t";
for(i=0;i< 4;i++)
cout<<Q[i];
cout<<"\t";
cout<<q<<"\t";
for(i=0;i< 4;i++)
cout<<M[i];
for(j=0;j< 4;j++)
{
if((Q[3]==0)&&(q==1))
{
cout<<"\n A:=A+M \t\t";
add(A,M);
for(i=0;i< 4;i++)
cout<<A[i];
cout<<"\t";
for(i=0;i< 4;i++)
cout<<Q[i];
cout<<"\t"<<q<<"\t";
for(i=0;i< 4;i++)
cout<<M[i];
}
if((Q[3]==1)&&(q==0))
{
cout<<"\n A:=A-M \t\t";
for(i=0;i< 4;i++)
temp1[i] = 1-M[i];
add(temp1,C);
add(A,temp1);
for(i=0;i< 4;i++)
cout<<A[i];
cout<<"\t";
for(i=0;i< 4;i++)
cout<<Q[i];
cout<<"\t"<<q<<"\t";
for(i=0;i< 4;i++)
cout<<M[i];
}
cout<<"\n Shift \t\t\t";
y = A[3];
q = Q[3];
rshift(A[0],A);
rshift(y,Q);
for(i=0;i< 4;i++)
cout<<A[i];
cout<<"\t";
for(i=0;i< 4;i++)
cout<<Q[i];
cout<<"\t";
cout<<q<<"\t";
for(i=0;i< 4;i++)
cout<<M[i];
}
cout<<"\n\n---------------------------------------------------\n";
cout<<"\nTHE ANSWER IN BINARY IS : ";
for(i=0;i< 4;i++)
ans[i]=A[i];
for(i=0;i< 4;i++)
ans[i+4]=Q[i];
if(((a< 0)&&(b>0))||((a>0)&&(b< 0)))
{
for(i=0;i< 8;i++)
ans[i]=1-ans[i];
for(i=7;i>=0;i--)
{
x = ans[i];
ans[i]=c^x^C1[i];
if(((c==1)&&(x==1))||((x==1)&&(C1[i]==1))||((C1[i]==1)&&(c==1)))
c=1;
else
c=0;
}
}
for(i=0;i< 8;i++)
cout<<ans[i];
for(i=7;i>=0;i--)
{
s = s + (pow(2,z) * ans[i]);
z = z+1;
}
if(((a< 0)&&(b>0))||((a>0)&&(b< 0)))
cout<<"\nTHE ANSWER IN DECIMAL IS : <<s<<\n";
else
cout<<"\nTHE ANSWER IN DECIMAL IS :" <<s<<"\n";
getch();
}
OUTPUT
---------------------------------------------------
OPERATION A Q Q' M
---------------------------------------------------
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
int getsize(int x)
{
int c;
if(x<=1)
c = 2;
else if(x < 4)
c = 2;
else if(x< 8)
c = 3;
else if(x< 16)
c = 4;
else if(x< 32)
c = 5;
else if(x< 64)
c = 6;
else if(x< 128)
c = 7;
else if(x< 256)
c = 8;
else if(x< 512)
c = 9;
return c;
}
void main()
{
int B,Q,Z,M,c,c1,e,f,g,h,i,j,x,y,ch,in,S,G,P;
int a[24],b[12],b1[12],q[12],carry=0,count=0,option;
long num;
do
{
clrscr();
cout<<"¦-----------------------------------------------¦\n";
cout<<"¦\t\tPROGRAM FOR DIVISION\t\t¦\n";
cout<<"¦-----------------------------------------------¦";
cout<<"\n\nENTER DIVIDEND\t: ";
cin>>Q;
y = getsize(Q);
cout<<"ENTER DIVISOR\t: ";
cin>>M;
x = getsize(M);
Z = max(x,y);
cout<<"\n\tTOTAL BITS CONSIDERED FOR RESULT => "<<2*Z+1;
cout<<"\n\tINITIALLY A IS RESET TO ZERO:";
for(i=0;i<=Z;i++)
{
a[i]=0;
cout<<a[i]<<" ";
}
for(i=Z;i>=0;i--)
{
b1[i] = b[i] = M%2;
M = M/2;
b1[i] = 1-b1[i];
}
carry = 1;
for(i=Z;i>=0;i--)
{
c1 = b1[i]^carry;
carry = b1[i]&&carry;
b1[i]=c1;
}
for(i=2*Z;i>Z;i--)
{
a[i] = Q%2;
Q = Q/2;
}
cout<<"\n\n\tDivisor\t\t(M)\t: ";
for(i=0;i<=Z;i++)
cout<<b[i]<<" ";
cout<<"\n\t2'C Divisor\t(M)\t: ";
for(i=0;i<=Z;i++)
cout<<b1[i]<<" ";
cout<<"\n\tDividend\t(Q)\t: ";
for(i=Z+1;i<=2*Z;i++)
cout<<a[i]<<" ";
cout<<"\n\n\tBITS CONSIDERED:C [ A ] [ M ]";
cout<<"\n\t\t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i<=2*Z;i++)
cout<<a[i]<<" ";
count = Z;
do{
for(i=0;i< 2*Z;i++)
a[i] = a[i+1];
cout<<"\n\nLeft Shift\t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i< 2*Z;i++)
cout<<a[i]<<" ";
carry=0;
for(i=Z;i>=0;i--)
{
S=a[i]^(b1[i]^carry);
G=a[i]&&b1[i];
P=a[i]^b1[i];
carry=G||(P&&carry);
a[i]=S ;
}
cout<<"\n A <- A-M \t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i< 2*Z;i++)
cout<<a[i]<<" ";
ch=a[0];
cout<<"\nBIT C:"<<ch;
switch (ch)
{
case 0: a[2*Z]=1;
cout<<" Q0<- 1\t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i<=2*Z;i++)
cout<<a[i]<<" ";
break;
case 1: a[2*Z]=0;
cout<<" Q0<- 0\t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i< 2*Z;i++)
cout<<a[i]<<" ";
carry=0;
for(i=Z;i>=0;i--)
{
S=a[i]^(b[i]^carry);
G=a[i]&&b[i];
P=a[i]^b[i];
carry=G||(P&&carry);
a[i]=S ;
}
cout<<"\nA<- A+M"<<" ";
cout<<"\t\t";
for(i=0;i<=Z;i++)
cout<<a[i]<<" ";
cout<<" ";
for(i=Z+1;i<=2*Z;i++)
cout<<a[i]<<" ";
break;
}
count--;
}while(count!=0);
num=0;
cout<<"\n";
cout<<"\n\t\t< < QUOTIENT IN BITS>> :";
for(i=Z+1;i<=2*Z;i++)
{
cout<<a[i]<<" ";
num=num+pow(2,2*Z-i)*a[i];
}
cout<<"\n\t\tOUOTIENT IN DECIMAL :"<<num;
num=0;
cout<<"\n\t\t< < REMAINDER IN BITS>>:";
for(i=0;i<=Z;i++)
{
cout<<a[i]<<" ";
num=num+pow(2,Z-i)*a[i];
}
cout<<"\n\t\tREMAINDER IN DECIMAL :"<<num;
getche();
cout<<"\n\tDO YOU WANT TO CONTINUE PRESS 0-ESC 1-CONT.:";
cin>>option;
}while(option!=0);
getch();
}
OUTPUT
¦-----------------------------------------------¦
¦ PROGRAM FOR DIVISION ¦
¦-----------------------------------------------¦
ENTER DIVIDEND : 8
ENTER DIVISOR : 3
Divisor (M) : 0 0 0 1 1
2'C Divisor (M) : 1 1 1 0 1
Dividend (Q) : 1 0 0 0
int get1(int a)
{
char ch='B';
if(a==1)
ch='A';
do
{
cout<<"\n\tENTER VALUE OF "<<ch<<" ";
cin>>a;
if(a<=0)
cout<<"\n\t\t!INVALID NUMBER.ENTER VALUE (0< A)!";
}while(a<=0);
return(a);
}
void add()
{
int i=7,A,B,a,b,cin,num;
int n1[8],n2[8],cg[8],cp[8],sum[8];
for(i=0;i<=7;i++)
{
n1[i]=0; // Num 1
n2[i]=0; // Num 2
cg[i]=0; // Gi
cp[i]=0; // Pi
sum[i]=0; // Sum
}
A = a = get1(1);
B = b = get1(0);
i=7;
do
{
n1[i]=a%2;
a=a/2;
n2[i]=b%2;
b=b/2;
i--;
}while((a!=0)||(b!=0));
i=0;
cout<<"\n\t\t Binary Form";
cout<<"\n\t A := "<<A<<" ";
for(i=0;i<=7;i++)
cout<<n1[i]<<" ";
cout<<"\n\t B := "<<B<<" ";
for(i=0;i<=7;i++)
cout<<n2[i]<<" ";
cin=0;
for(i=7;i>=0;i--)
{
sum[i]=exor(cin,exor(n1[i],n2[i])); // Sum Pi (+) Bi
cg[i]=and(n1[i],n2[i]); // Gi = Ai . Bi
cp[i]=or(n1[i],n2[i]); // Pi = Ai (+) Bi
cin=or(cg[i],and(cp[i],cin)); // Cin =Gi + PiCi
}
cout<<"\n\n\t\t SUM: ";
num=0;
for(i=0;i<=7;i++)
{
cout<<sum[i]<<" ";
num=num + (sum[i]*pow(2,7-i));
}
cout<<"\n\n\t\t SUM: "<<A<<"+"<<B<<"="<<num<<"\n";
cout<<"\t\t The Carry Is :" <<cin<<"\n\n";
}
void main()
{
int ch,a,b,c,d;
clrscr();
while(1)
{
M: cout<<"******** MENU FOR LOOK AHEAD CARRY ADDER ********";
cout<<"\n\t\t1.ADDITION OF TWO NUMBER";
cout<<"\n\t\t2.EXIT\n";
cout<<"*************************************************";
cout<<"\n\t\tEnter Your Option:";
cin>>ch;
switch(ch)
{
case 1:
add();
getch();
break;
case 2: exit(0);
break;
default:
clrscr();
cout<<"ERROR!!!!!!!!! INVALID ENTRY...\n";
cout<<"Back To Main Menu\n\n";
goto M;
}
}
}
OUTPUT
Binary Form
A=2:00000010
B=3:00000011
SUM: 0 0 0 0 0 1 0 1
SUM: 2 + 3= 5
The Carry Is : 0