Thursday 13 September 2012

To convert the given binary number to 2’s complement


Description:
In this program the given binary number is first covert the numbers 0 to1 and 1 to 0. And finally add the 1 to the converted number. Then  we will get the 2’s complement number.
Algorithm:  main program
Step 1: Start
Step 2: declare the subprogram “complement(char *a)”
Step 3: initialize the variable i
Step 4: read the binary number
Step 5: perform the loop operation. if it is true then follows. if not goto step 7
i)                    for(i=0;a[i]!=’\0’;i++)
ii)                  if(a[i]!=’0’&&a[i]!=’1’) then displayed the number is not valid. enter the correct number.
iii)                Exit the loop
Step 6: call sub program ‘complemt(a)’
Step 7: stop
Sub program:
Step 1: initialize the variable I,c=0,b[160
Step 2: 1=strlen(a)
Step 3: perform the loop operation. if it is true then follows. if not goto      
             i)for(i=l-1;i>=0;i--)
ii)if(a[i]==’0’) then b[i]=’1’ else
iii)b[i]=’0’
Step 4: for(i=l-1;i>=0;i--) is true
i)                    if(i==l-1) then
ii)                  if(b[i]==’0’) then b[i]=’1’ else
iii)                b[i]=’0’,c=1 if not goto step 5

Step 5: if(c==1&&b[i]==’0’) is true then
i)                    b[i]=’1’, c=0 if not goto Step 6
Step 6: if(c==1&&b[i]==’1’) then b[i]=’0’,c=1
Step 7: displayed b[l]=’\0’
Step 8: print b and return to main program
Program:
#include <stdio.h>
#include<conio.h>

void complement (char *a);
void main()
{
 char a[16];
 int i;
            clrscr();
 printf("Enter the binary number");
 gets(a);
 for(i=0;a[i]!='\0'; i++)
 {
  if (a[i]!='0' && a[i]!='1')
  {
printf("The number entered is not a binary number. Enter the correct number");
   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';
printf("The 2's complement is %s", b);
}





Output:

1.Enter the binary number101010
The 2's complement is 010110

Enter the binary number11111
The 2's complement is 00001
Enter the binary number2222
The number entered is not a binary number. Enter the correct number
Conclusion: the program is error free



VIVA QUESATIONS:

1) Expand ASCII ?
Ans: American standarad code for information interchange
2)What is binary number ?
Ans: The number which contains only 0 and 1 is called binary number.
3) Define 2”s complement ?
Ans: The given binary number is first covert the numbers 0 to1 and 1 to 0. And finally add the 1 to the converted number. Then  we will get the 2’s complement number.










2 comments:

  1. The program which you have given has a bug. There is an extra curly bracket.

    ReplyDelete
    Replies
    1. Also, the main's bracket is put at the wrong place. It will not compile. Please make the correct changes.

      Delete