Difficulty: Medium
Correct Answer: 2 and 4
Explanation:
Introduction / Context:
This question reinforces the difference between arithmetic, shift, and bitwise XOR operators in Java, and highlights that ^ is XOR, not exponentiation. It asks which proposed expressions evaluate to the same result when applied to the integer 16.
Given Data / Assumptions:
>> is arithmetic right shift; >>> is logical right shift.^ performs bitwise XOR, not power.
Concept / Approach:
Right-shifting 16 by 2 gives 16 / 2^2 in the power sense, but since ^ is XOR, writing 16/2^2 is actually (16/2) ^ 2 by precedence, and since 2 ^ 2 == 0, the expression 16/0 is a constant-expression division by zero which is illegal at compile time. Meanwhile, 16 >> 2 and 16 >>> 2 both yield 4 for a nonnegative integer.
Step-by-Step Solution:
Verification / Alternative check:
Evaluating on a REPL confirms both right-shift variants produce 4 for nonnegative inputs. For negative values, >> and >>> differ.
Why Other Options Are Wrong:
Common Pitfalls:
Misreading ^ as exponent; in Java, there is no exponent operator—use Math.pow for powers.
Final Answer:
2 and 4
Discussion & Comments