ExamVeda
Login
Home
This question belongs to C Program C Fundamentals
C Fundamentals
?

What will be the output of the following C code?
#include <stdio.h>
int main()
{
    int x = 0, y = 2;
    int z = ~x & y;
    printf("%d\n", z);
}

Answer & Solution
Correct Answer: Option B
Understanding Bitwise Operators:
This question tests your understanding of bitwise operators in C. Let's break down the code step by step.

1. `~x`: The tilde (~) is the bitwise NOT operator. It flips all the bits of the variable `x`. Since `x` is 0 (which is represented as all 0s in binary), `~x` will become -1 (represented as all 1s in two's complement).

2. `&y`: The ampersand (&) is the bitwise AND operator. It compares the corresponding bits of two operands. If both bits are 1, the resulting bit is 1; otherwise, it's 0.

3. `~x & y`: We're performing a bitwise AND between `~x` (-1, all 1s) and `y` (2). Let's assume your system uses 32-bit integers (most do). Then 2 is represented as `00000000000000000000000000000010` in binary. The bitwise AND operation will be:
11111111111111111111111111111111 (&) 00000000000000000000000000000010 = 00000000000000000000000000000010
This results in 2.

4. `printf("%d\n", z);` This line prints the value of `z`, which is 2, to the console.

Therefore, the correct answer is B: 2
Important Note: The exact binary representation and the behavior of bitwise NOT might depend slightly on your specific compiler and system architecture, but the principle remains the same.
Examveda
Question posted by Examveda
Community

Join the Discussion

1 Comment
Hareshwar Avhad
Hareshwar Avhad 2 years ago
1. Bitwise NOT (~) on x = 0: This flips all bits to give ~x = -1.
2. Bitwise AND (&) between ~x (-1) and y (2): Only the bits common to both are retained, resulting in 2.
3. So, the output is 2.