Wednesday, September 29, 2010

Multiplication.

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

void main()
{
    int a[10],m[10],q[10],i,j,c=0,b[10];
    clrscr();
    printf("\n Enter the value of multiplicant(m) : ");
    for(i=4;i>=1;i--)
    {
       scanf("%d",&m[i]);
       a[i]=0;
     }
    printf("\n Enter the value of multiplier (q)  : ");
    for(i=4;i>=1;i--)
       scanf("%d",&q[i]);
    for(j=1;j<=4;j++)
    {
     if(q[1]==1)
     {
       for(i=1;i<=4;i++)
       {
            b[i]=((!m[i]&&!a[i]&&c)||(!m[i]&&a[i]&&!c)
                 ||(m[i]&&a[i]&&c)||(m[i]&&!a[i]&&!c));
            c=((m[i]&&a[i])||(a[i]&&c)||(m[i]&&c));
            a[i]=b[i];
            }
      }
     for(i=1;i<=3;i++)
       q[i]=q[i+1];
       q[4]=a[1];
     for(i=1;i<=3;i++)
       a[i]=a[i+1];
       a[4]=c;
       c=0;
   }
   printf("\n\n Solution for (m*q)  :  ");
   for(i=4;i>=1;i--)
      printf("%d",a[i]);
   for(i=4;i>=1;i--)
      printf("%d",q[i]);
   getch();
}

/* OUTPUT
 Enter the value of multiplicant(m) : 1 0 0 1

 Enter the value of multiplier (q)  : 0 1 0 0

 Solution for (m*q)  :  00100100
*/

Signed Multiplication using Booth's Algorithm.

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
  int m1,m2,q1,q2,i,s,temp,q_1=0,j=0,product=0,count=4,a[4]={0,0,0,0},
  m[4]={0,0,0,0},q[4]={0,0,0,0},m3[4],ans[8];
  clrscr();
  printf("\n\n\n enter the two unsigned numbers:");
  scanf("%d%d",&m1,&q1);
  m2=m1;
  q2=q1;
  if(m1<0) m1=m1*(-1);
  if(q1<0) q1=q1*(-1);
  for(i=0;i<4;i++)
  {
   m[i]=m1%2;
   m1=m1/2;
   q[i]=q1%2;
   q1=q1/2;
  }
  if(m2<0)
  {
   for(i=3;i>=0;i--)
   {
    if(m[i]==0) m[i]=1;
    else m[i]=0;
   }
   m[0]=m[0]+1;
   for(i=0;i<3;i++)
   {
    if(m[i]>=2)
    {
     m[i]=m3[i]-2;
     m[i+1]=m[i+1]+1;
    }
   }
  }
  if(q2<0)
  {
   for(i=3;i>=0;i--)
   {
    if(q[i]==0) q[i]=1;
    else q[i]=0;
   }
   q[0]=q[0]+1;
   for(i=0;i<3;i++)
   {
    if(q[i]>=2)
    {
     q[i]=q[i]-2;
     q[i+1]=q[i+1]+1;
    }
   }
  }
  printf("\n The binary conversions are:\n\n\n%d:",m2);
  for(i=3;i>=0;i--)
  printf("%d",m[i]);
  printf("\n%d:",q2);
  for(i=3;i>=0;i--)
  printf("%d",q[i]);
  again:
  if(q[0]==0&&q_1==1)
  {
   for(i=3;i>=0;i--)
   a[i]=a[i]+m[i];
   for(i=0;i<3;i++)
   {
    if(a[i]>=2)
    {
             a[i]=a[i]-2;
     a[i+1]=a[i+1]+1;
    }
    if(a[3]>=2) a[3]=a[3]-2;
   }
  }
  else
  {
   if(q[0]==1&&q_1==0)
   {
    for(i=3;i>0;i--)
    m3[i]=m[i];
    for(i=3;i>=0;i--)
    {
     if(m3[i]==0) m3[i]=1;
     else m3[i]=0;
    }
    m3[0]=m3[0]+1;
    for(i=0;i<3;i++)
    {
             if(m3[i]>=2)
     {
              m3[i]=m3[i]-2;
      m3[i+1]=m3[i+1]+1;
      }
    }
    for(i=3;i>=0;i--)
     a[i]=a[i]+m3[i];
    {
             if(a[i]>=2)
     { 
              a[i]=a[i]-2;
      a[i+1]=a[i+1]+1;
     }
     if(a[3]>=2)
     a[3]=a[3]-2;
    }
  }
  }
  if((q[0]==1&&q_1==1)||(q[0]==0&&q_1==0))
  goto shift;
  shift:
  q_1=q[0];
  for(i=0;i<4;i++)
  q[i]=q[i+1];
  q[3]=a[0];
  s=a[3];
  for(i=0;i<4;i++)
  a[i]=a[i+1];
  a[3]=s;
  count--;
  else goto again;
  end:
  ans[7]=a[3];ans[6]=a[2];ans[5]=a[1];ans[4]=a[0];
  for(i=3;i>=0;i--)
  if((m2>0&&q2<0)||(m2<0&&q2>0))
  {
   for(i=7;i>=0;i--)
  { 
   if(ans[i]==0) ans[i]=1;
  else ans[i]=0;
  }
  ans[0]=ans[0]+1;
  {
   if(ans[i]>=2)
   {
    ans[i]=ans[i]-2;
    ans[i+1]=ans[i+1]+1;
   }
  }
 }
  for(i=0;i<8;i++)
  {
   temp=ans[i]*pow(2,j);
   product=product+temp;
   j++;
  }
  if((m2>0&&q2<0)||(m2<0&&q2>0))
  product=product*(-1);
  printf("\n Product: ");
  for(i=7;i>=0;i--)
  printf("%d",ans[i]);
  printf("\n\n\n The Unsigned Multiplication of %d and %d is %d",m2,q2,product);
  getch();
}

/* OUTPUT:

 enter the two unsigned numbers:3
 4

 The binary conversions are:

3:0011
4:0100
 Product: 00001100


The Unsigned Multiplication of 3 and 4 is 12
*/

Checksum

#include<stdio.h>
#include<conio.h>
#include<math.h>
int i,a[8],b[8];
int ans,num[5],j,k,tot,carry;
void binary(int);
int check1sum();
void main()
{
int sender, receiver;
clrscr();
printf("\n Enter five 4-digit number: ");
for(i=0,tot=0;i<5;i++)
{
scanf("%d",&num[i]);
tot=tot+num[i];
}
printf("\nTotal= %d",tot);
binary(tot);
sender=check1sum();
printf("\n SENDER=%d",sender);

printf("\n Data Sent is \n");
for(i=0,tot=0;i<5;i++)
printf("\t%d",num[i]);
printf("\t%d",ans);

printf("\n At receiver side\n");
for(i=0,tot=0;i<5;i++)
{
tot=tot+num[i];
}
ans=tot+ans;
printf("\n Answer=%d",ans);
binary(ans);
sender=check1sum();
printf("\n RECEIVER=%d",sender);
getch();
}

void binary(int n)
{
i=0;
while(n!=0)
{
a[i]=n%2;
n=n/2;
i++;
}
}

int check1sum()
{
for(i=0,j=3,carry=0;i<4,j>=0;i++,j--)
{
ans=carry+a[i]+a[i+4];
if(ans==3)
{
carry=1;
b[j]=1;
}
if(ans==2)
{
carry=1;
b[j]=0;
}
if(ans==1)
{
carry=0;
b[j]=1;
}
if(ans==0)
{
carry=0;
b[j]=0;
}
}
printf("\n\n\n\n CHECKSUM\n\n\n");
for(i=0;i<4;i++)
printf("\t%d",b[i]);

for(i=0;i<4;i++)
{
if(b[i]==0)
b[i]=1;
else
b[i]=0;
}

for(i=0,ans=0;i<4;i++)
ans=ans+pow(2,3-i)*b[i];
return(ans);
}

CRC(Cyclic Redundancy check)

#include
#include
#include
#include
void main()
{
int i,j,n,g,a,arr[20],gen[20],b[20],q[20],s;
clrscr();
cout<<"Transmitter side :"; cout<<<"enter no. of data bits:"; cin>>n;
cout<<"\n enter data:"; for(i=0;i>arr[i];
cout<<"\n Enter size of Generator :"; cin>>g;
do
{ cout<<"Enter generator :"; for(j=0;j>gen[j];
}while(gen[0]!=1);
cout<<"\n Enter the Generator Matrix :";
for(j=0;j
cout<
a=n+(g-1);
cout<<"\n\t The appended matrix is :";
for(i=0;i
arr[n+i]=0;
for(i=0;i
cout<
for(i=0;i
q[i]=arr[i];
for(i=0;i
{
if(arr[i]==0)
{
for(j=i;j
arr[j]=arr[j]^0;
}
else
{
arr[i]=arr[i]^gen[0];
arr[i+1]=arr[i+1]^gen[1];
arr[i+2]=arr[i+2]^gen[2];
arr[i+3]=arr[i+3]^gen[3];
}
}
cout<<"\n\t The CRC is :";
for(i=n;i
cout<
s=n+a;
for(i=n;i
q[i]=arr[i];
cout<
for(i=0;i
cout<
getch();
}