Tuesday, October 20, 2009

booths(for negative)

#include<iostream>
#include<conio.h>

using namespace std;

void getdata();

void binary();
void display();
void putdata();
void reset();
void add();
void rshift();
void subtract();

int a,b,p[5],q[5],ac[5],i,q1,n,j,m[5],;

int main()
{
    
     int ch,count;
     L1:getdata();
     binary();
     putdata();
     q1=0;
                       
      cout<<"\n";
     display();
      for(count=0;count<=4;count++)
     {
                       cout<<endl;
   
    
     if(q[4]==1&&q1==0)
     {
                       subtract();
     cout<<"\n";
     display();
     cout<<"\tAC=AC-M";
     }
     else if(q[4]==0&&q1==1)
     {add();
     cout<<"\n";
     display();
     cout<<"\tAC=AC+M";
     }
   
     rshift();
     cout<<"\n";
     display();
     cout<<"\tRightshift";
    
    
     cout<<endl;
     }
    
     n=0;
     int mult=1;
    
     for(i=4;i>=0;i--)
     {
     n=n+(q[i]*mult);
     mult=mult*2;
     }
     for(i=4;i>=0;i--)
     {
     n=n+(ac[i]*mult);
     mult=mult*2;
     }
     if(ac[0]==1)
     n=n-1024;
     cout<<"\nthe answer:"<<n;
     cout<<"\ndo you wish to continue:\n1.yes\n2.no:";
     cin>>ch;
     if(ch==1)
     goto L1;
    
     }
    
    

void getdata()
{
     cout<<"enter the 1st no.:";
     cin>>a;
    
    
    
     cout<<"enteer the 2nd no:";
     cin>>b;
     //cout<<"getdata";
          }
    
void binary()
{
     int t1,t2;
     t1=a;
     t2=b;
     int t3=t1;
   
   
     for(i=0;i<=4;i++)
     {
                      p[i]=0;
                      q[i]=0;
                      ac[i]=0;
                      }
                       if(t1<0)
     {t1=t1*-1;
     t1=16-t1;
     p[0]=1;}
     if(t2<0)
     {t2=t2*-1;
     t3=t3*-1;
     t2=16-t2;
     q[0]=1;
     t3=16-t3;}
    
              i=4;
     do
     {
            p[i]=t1%2;
            t1=t1/2;
            m[i]=p[i];
            i--;
            }while(t1>0);
     i=4;
     do
     {
      q[i]=t2%2;
      t2=t2/2;
      i--;
      }while(t2>0);
      t3=16-t3;
      i=4;
     do
     {
      m[i]=t3%2;
      t3=t3/2;
      i--;
      }while(t3>0);
      if(a<0)
      m[0]=0;
      //cout<<"binary";
      }
    


void putdata()
{
     cout<<"\nthe 1st no. is:"<<a<<":";
     for(i=0;i<=4;i++)
     cout<<p[i];
     cout<<"\nthe 2nd no. is:"<<b<<":";
     for(i=0;i<=4;i++)
     cout<<q[i];
//cout<<"putdata";
}

void subtract()
{
      int cr=0;
     for(i=4;i>=0;i--)
     {
                      if(ac[i]==0&&m[i]==0&&cr==0)
                      {
                                                  ac[i]=0;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&m[i]==0&&cr==1)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&m[i]==1&&cr==0)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&m[i]==1&&cr==1)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&m[i]==0&&cr==0)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==1&&m[i]==0&&cr==1)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&m[i]==1&&cr==0)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&m[i]==1&&cr==1)
                      {
                                                  ac[i]=1;
                                                  cr=1;
                                                  }
                                                  }
//cout<<"subtract";
}

void add()
{
     int cr=0;
     for(i=4;i>=0;i--)
     {
 if(ac[i]==0&&p[i]==0&&cr==0)
                      {
                                                  ac[i]=0;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&p[i]==0&&cr==1)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&p[i]==1&&cr==0)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==0&&p[i]==1&&cr==1)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&p[i]==0&&cr==0)
                      {
                                                  ac[i]=1;
                                                  cr=0;
                                                  }
                      else if(ac[i]==1&&p[i]==0&&cr==1)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&p[i]==1&&cr==0)
                      {
                                                  ac[i]=0;
                                                  cr=1;
                                                  }
                      else if(ac[i]==1&&p[i]==1&&cr==1)
                      {
                                                  ac[i]=1;
                                                  cr=1;
                                                  }
                                                  }   
//cout<<"add";
}

void rshift()
{
     q1=q[4];
     for(i=3;i>=0;i--)
     q[i+1]=q[i];
    
     q[0]=ac[4];
    
     for(i=3;i>=0;i--)
     ac[i+1]=ac[i];
     ac[0]=ac[1];
//     cout<<"rshift";
    
}

void display()
{
     for(j=0;j<=4;j++)
     cout<<ac[j];
     cout<<"\t";
     for(j=0;j<=4;j++)
     cout<<q[j];
     cout<<"\t"<<q1;
//     cout<<"display:";
     }
    
    

No comments:

Post a Comment