logo

CuriousTab

CuriousTab

Discussion


Home C Programming Bitwise Operators Comments

  • Question
  • Assuming a integer 2-bytes, What will be the output of the program?
    #include<stdio.h>
    
    int main()
    {
        printf("%x\n", -1<<3);
        return 0;
    }
    


  • Options
  • A. ffff
  • B. fff8
  • C. 0 
  • D. -1

  • Correct Answer
  • fff8 

    Explanation
    The system will treat negative numbers in 2's complement method.

    Example:

    Assume the size of int is 2-bytes(16 bits). The integer value 1 is represented as given below:

    Binary of 1: 00000000 00000001 (this is for positive value of 1)

    1's complement of binary 1: 11111111 11111110
    2's complement of binary 1: 11111111 11111111

    Thy system will store '11111111 11111111' in memory to represent '-1'.

    If we do left shift (3 bits) on 11111111 11111111 it will become as given below:

    11111111 11111111 ---(left shift 3 times)---> 11111111 11111000.

    So, 11111111 11111000 ---(binary to hex)---> FF F8. (Required Answer)

    Note:

    How is the negative number obtained from 2's complement value?

    As stated above, -1 is represented as '11111111 11111111' in memory.

    So, the system will take 2's complement of '11111111 11111111' to the get the original negative value back.

    Example:

    Bit Representation of -1: 11111111 11111111

    Since the left most bit is 1, it is a negative number. Then the value is

    1's complement: 00000000 00000000
    2's complement: 00000000 00000001 (Add 1 to the above result)

    Therefore, '00000000 00000001' = 1 and the sign is negative.

    Hence the value is -1.

    Bitwise Operators problems


    Search Results


    • 1. What will be the output of the program?
      #include<stdio.h>
      
      int main()
      {
          printf("%d %d\n", 32<<1, 32<<0);
          printf("%d %d\n", 32<<-1, 32<<-0);
          printf("%d %d\n", 32>>1, 32>>0);
          printf("%d %d\n", 32>>-1, 32>>-0);
          return 0;
      }
      

    • Options
    • A. Garbage values
    • B. 64 32
      0 32
      16 32
      0 32
    • C. All zeros
    • D. 8 0
      0 0
      32 0
      0 16
    • Discuss
    • 2. What will be the output of the program?
      #define P printf("%d\n", -1^~0);
      #define M(P) int main()\
                   {\
                      P\
                      return 0;\
                   }
      M(P)
      

    • Options
    • A. 1
    • B. 0
    • C. -1
    • D. 2
    • Discuss
    • 3. What will be the output of the program?
      #include<stdio.h>
      
      int main()
      {
          printf("%d >> %d %d >> %d\n", 4 >> 1, 8 >> 1);
          return 0;
      }
      

    • Options
    • A. 4 1 8 1
    • B. 4 >> 1 8 >> 1
    • C. 2 >> 4 Garbage value >> Garbage value
    • D. 2 4
    • Discuss
    • 4. If an unsigned int is 2 bytes wide then, What will be the output of the program?
      #include<stdio.h>
      
      int main()
      {
          unsigned int m = 32;
          printf("%x\n", ~m);
          return 0;
      }
      

    • Options
    • A. ffff
    • B. 0000
    • C. ffdf
    • D. ddfd
    • Discuss
    • 5. If an unsigned int is 2 bytes wide then, What will be the output of the program?
      #include<stdio.h>
      
      int main()
      {
          unsigned int a=0xffff;
          ~a;
          printf("%x\n", a);
          return 0;
      }
      

    • Options
    • A. ffff
    • B. 0000
    • C. 00ff
    • D. ddfd
    • Discuss
    • 6. What will be the output of the program?
      #include<stdio.h>
      
      int main()
      {
          unsigned char i = 0x80;
          printf("%d\n", i<<1);
          return 0;
      }
      

    • Options
    • A. 0
    • B. 256
    • C. 100
    • D. 80
    • Discuss
    • 7. Bitwise & and | are unary operators

    • Options
    • A. True
    • B. False
    • Discuss
    • 8. Left shifting a number by 1 is always equivalent to multiplying it by 2.

    • Options
    • A. True
    • B. False
    • Discuss
    • 9. Bitwise & can be used to divide a number by powers of 2

    • Options
    • A. True
    • B. False
    • Discuss
    • 10. Bitwise & can be used to check if more than one bit in a number is on.

    • Options
    • A. True
    • B. False
    • Discuss


    Comments

    There are no comments.

Enter a new Comment