C Programming - Structures, Unions, Enums - Discussion

Discussion Forum : Structures, Unions, Enums - Find Output of Program (Q.No. 3)
3.
What will be the output of the program ?
#include<stdio.h>

int main()
{
    struct value
    {
        int bit1:1;
        int bit3:4;
        int bit4:4;
    }bit={1, 2, 13};

    printf("%d, %d, %d\n", bit.bit1, bit.bit3, bit.bit4);
    return 0;
}
1, 2, 13
1, 4, 4
-1, 2, -3
-1, -2, -13
Answer: Option
Explanation:

Note the below statement inside the struct:

int bit1:1; --> 'int' indicates that it is a SIGNED integer.

For signed integers the leftmost bit will be taken for +/- sign.

If you store 1 in 1-bit field:

The left most bit is 1, so the system will treat the value as negative number.

The 2's complement method is used by the system to handle the negative values.

Therefore, the data stored is 1. The 2's complement of 1 is also 1 (negative).

Therefore -1 is printed.


If you store 2 in 4-bits field:

Binary 2: 0010 (left most bit is 0, so system will treat it as positive value)

0010 is 2

Therefore 2 is printed.


If you store 13 in 4-bits field:

Binary 13: 1101 (left most bit is 1, so system will treat it as negative value)

Find 2's complement of 1101:

1's complement of 1101 : 0010
2's complement of 1101 : 0011 (Add 1 to the result of 1's complement)

0011 is 3 (but negative value)

Therefore -3 is printed.

Discussion:
24 comments Page 2 of 3.

Hossam Ahmed said:   2 years ago
Bit1 will be stored in the rightmost bit, not the leftmost bit. So it is away from the bit responsible for the Negative sign!
(1)

Sudha said:   9 years ago
The bit 1:1 occupies only 1 bit.

Let's assume bit1=1 (0001)its 2's compliment is (1111) leftmost bit represents -ve value.

Sathya said:   1 decade ago
I don't understand the declaration part.

int bit1:1;
int bit3:4;
int bit4:4;

Can anyone explain it briefly?

Nidhinpradeep said:   1 decade ago
Syntax for bit fieldis.
Type variable:num of bits;.
Eg; int i:2;.
Here for I only 2 bits is allocated in memmory.

Vek said:   1 decade ago
I am unable to understand this program. I would like to understand this program.

So can any body help me?

Ramesh said:   1 decade ago
The value of 3 is positive but why we are taking as -3 please some one can explain this problem?

Nikhil said:   1 decade ago
What is this "int bit1:1;" means?

I can't understand please anyone help me ?

Krishna said:   1 decade ago
I am not understanding this explanation please give brief explanation.

Gowtham said:   1 decade ago
Why 1's and 2's complement taken in this problem?

Meril said:   1 decade ago
What is this "int bit1:1;" means?

Please help!


Post your comments here:

Your comments will be displayed after verification.