Difficulty: Easy
Correct Answer: Yes—use n | (1 << k) to set bit k.
Explanation:
Introduction / Context:
This question checks bit manipulation fluency in C: specifically, whether the bitwise OR operator can set a target bit in an integer without affecting other bits.
Given Data / Assumptions:
Concept / Approach:
The classic pattern to set a bit is: n_new = n | (1 << k). The mask (1 << k) has a 1 only at position k. ORing preserves existing 1s and turns bit k into 1 regardless of its prior state.
Step-by-Step Solution:
Create mask: mask = 1 << k.Apply OR: n_new = n | mask.All bits except k remain as in n; bit k becomes 1.No other bits are cleared or toggled; OR only adds ones where the mask has ones.
Verification / Alternative check:
Test example: n = 0b0101, k = 2 → mask = 0b0100 → n | mask = 0b0101 | 0b0100 = 0b0101 (bit already set). If n = 0b0001, k = 2 → result 0b0101, which shows the set operation.
Why Other Options Are Wrong:
AND is used to clear bits with complements, not to set. XOR toggles a bit and may undesirably clear a previously set bit. Floating-point and pointer arithmetic claims are unrelated.
Common Pitfalls:
Confusing set vs clear vs toggle; off-by-one errors in k; forgetting parentheses around (1 << k) in more complex expressions.
Final Answer:
Yes—use n | (1 << k) to set bit k.
Discussion & Comments