Home / C Programming / Bitwise Operators :: Discussion

Discussion :: Bitwise Operators

  1. Assuming a integer 2-bytes, What will be the output of the program?

     #include 
    
      int main() 
      {  
           printf("%x\n", -13);     
           return 0;
      }
    

  2. A.

    ffff

    B.

    fff8

    C.

    D.

    -1

    View Answer

    Workspace

    Answer : Option B

    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.


Be The First To Comment