Sail E0 Webinar
Question


What will be the output of the program?


#include<stdio.h>
typedef unsigned long int uli;
typedef uli u;
int main()
{
uli a;
u b = -1;
a = -1;
printf("%lu, %lu", a, b);
return 0;
}
Options:
A .  4343445454, 4343445454
B .  4545455434, 4545455434
C .  4294967295, 4294967295
D .  Garbage values
Answer: Option C

The system will treat the negative numbers with 2's complement method.

For 'long int' system will occupy 4 bytes (32 bits).

Therefore,

Binary 1 : 00000000 00000000 00000000 00000001

To represent -1, system uses the 2's complement value of 1. Add 1 to the 1's complement result to obtain 2's complement of 1.

So, First take 1's complement of binary 1 (change all 0s to 1s and all 1s to 0s)

1's complement of Binary 1:

11111111 11111111 11111111 11111110

2's complement of Binary 1: (Add 1 with the above result)

11111111 11111111 11111111 11111111


In HexaDecimal

11111111 11111111 11111111 11111111 = FFFF FFFF FFFF FFFF

In Unsigned Integer

11111111 11111111 11111111 11111111 = 4294967295.



Was this answer helpful ?
Next Question

Submit Solution

Your email address will not be published. Required fields are marked *

Latest Videos

Latest Test Papers