Ad

Saturday, March 15, 2008

How Bitwise Operators are Used, an Example Program

Well, one-by-one we’ve discussed each of the Bitwise Operator. Starting from Operation on Bits and Bitwise Operators, we moved on to Right/Left Bit Shift Operators then discussed Decimal Number to Binary Conversion Program. and at last One's Complement and XOR Operators. After having so much theoretical it’s time now for a nice Example Program, which is the topic of today’s post. The code here is basically to show how these bitwise operator are used rather than what they are used for.


  // Example Program to demonstrate how
  // One's Complement (~) and XOR (^)
  // Opeartors are used.
  #include<stdio.h>

  // prototype
  void showbits(short int);

  // defined
  void showbits(short int dec_num)
  {
    short int loop, bit, and_mask;

    for(loop=15; loop>=0; loop--)
    {
      and_mask=1<<loop;
      bit=dec_num&and_mask;


      if(bit==0) printf("0");
      else printf("1");
    }
  }

  void main()
  {
    // declare three short ints
    // for storing user inputs
    // and results
    short int a,b,res;
    int ch;

    while(ch!=7)
    {
      // show main menu
      printf("\t\tMain Menu\n");
      printf("\t\t---------\n");
      printf("1. Perform Left Bit Shift Operation\n");
      printf("2. Perform Right Bit Shift Operation\n");
      printf("3. Perform AND Operation\n");
      printf("4. Perform OR Operation\n");
      printf("5. Perform One's Complement Operation\n");
      printf("6. Perform XOR Operation\n");
      printf("7. Quit\n");
      scanf("%d",&ch);

      switch(ch)
      {
      case 1:
        // take input
        printf("\n\nEnter a decimal number: ");
        scanf("%d",&a);
        printf("\nEnter number of places to shift bit: ");
        scanf("%d",&b);


        printf("\n\n\tEntered Number: ");
        showbits(a);
        printf(" (decimal %d)",a);

        // perform left bit shift
        // operation
        res=a<<b;

        // show the formatted output
        printf("\n\tLeft Shifted  : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      case 2:
        // take input
        printf("\n\nEnter a decimal number: ");
        scanf("%d",&a);
        printf("\nEnter number of places to shift bit: ");
        scanf("%d",&b);


        printf("\n\n\tEntered Number: ");
        showbits(a);
        printf(" (decimal %d)",a);

        // perform right bit shift
        // operation
        res=a>>b;

        // show the formatted output
        printf("\n\tRight Shifted : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      case 3:
        printf("\n\nEnter two decimal number: ");
        scanf("%d",&a);
        scanf("%d",&b);

        printf("\n\n\tEntered Number 1: ");
        showbits(a);
        printf(" (decimal %d)",a);
        printf("\n\tEntered Number 2: ");
        showbits(b);
        printf(" (decimal %d)",b);

        // perform AND operation on two
        // variables a and b
        res=a&b;

        printf("\n\tAND'ed          : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      case 4:
        printf("\n\nEnter two decimal number: ");
        scanf("%d",&a);
        scanf("%d",&b);

        printf("\n\n\tEntered Number 1: ");
        showbits(a);
        printf(" (decimal %d)",a);
        printf("\n\tEntered Number 2: ");
        showbits(b);
        printf(" (decimal %d)",b);

        // perform OR operation on two
        // variables a and b
        res=a|b;

        printf("\n\tOR'ed           : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      case 5:
        // take input
        printf("\n\nEnter a decimal number: ");
        scanf("%d",&a);

        printf("\n\n\tEntered Number: ");
        showbits(a);
        printf(" (decimal %d)",a);

        // perform one's complement
        // operation
        res=~a;

        // show the formatted output
        printf("\n\t~'ed           : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      case 6:
        printf("\n\nEnter two decimal number: ");
        scanf("%d",&a);
        scanf("%d",&b);

        printf("\n\n\tEntered Number 1: ");
        showbits(a);
        printf(" (decimal %d)",a);
        printf("\n\tEntered Number 2: ");
        showbits(b);
        printf(" (decimal %d)",b);

        // perform XOR operation on two
        // variables a and b
        res=a^b;

        printf("\n\tXOR'ed          : ");
        showbits(res);
        printf(" (decimal %d)\n\n",res);

        break;

      }
    }
  }

Test Run:

   Main Menu
   ---------
   1. Perform Left Bit Shift Operation
   2. Perform Right Bit Shift Operation
   3. Perform AND Operation
   4. Perform OR Operation
   5. Perform One's Complement Operation
   6. Perform XOR Operation
   7. Quit
   1
   Enter a decimal number: 3476
   Enter number of places to shift bit: 3
   Entered Number: 0000110110010100 (decimal 3476)
   Left Shifted : 0110110010100000 (decimal 27808)
   Main Menu
   ---------
   1. Perform Left Bit Shift Operation
   2. Perform Right Bit Shift Operation
   3. Perform AND Operation
   4. Perform OR Operation
   5. Perform One's Complement Operation
   6. Perform XOR Operation
   7. Quit
   2
   Enter a decimal number: 543
   Enter number of places to shift bit: 5
   Entered Number: 0000001000011111 (decimal 543)
   Right Shifted : 0000000000010000 (decimal 16)
   Main Menu
   ---------
   1. Perform Left Bit Shift Operation
   2. Perform Right Bit Shift Operation
   3. Perform AND Operation
   4. Perform OR Operation
   5. Perform One's Complement Operation
   6. Perform XOR Operation
   7. Quit
   7
   Press any key to continue...

Related Articles:

No comments:

Post a Comment

You are free to comment anything, although you can comment as 'Anonymous' it is strongly recommended that you supply your name. Thank You.

Please don't use abusive language.