Bird
Raised Fist0
DSA Cprogramming~20 mins

Set Clear Toggle a Specific Bit in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bitwise Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output after setting the 3rd bit?
Given the initial integer value 8 (binary 1000), what is the output after setting the 3rd bit (0-based from right)?
DSA C
int x = 8; // binary 1000
int bit = 3;
x = x | (1 << bit);
printf("%d\n", x);
A8
B12
C16
D24
Attempts:
2 left
💡 Hint
Remember that bits are counted from 0 starting at the rightmost bit.
❓ Predict Output
intermediate
2:00remaining
What is the output after clearing the 2nd bit?
Given the integer value 15 (binary 1111), what is the output after clearing the 2nd bit (0-based from right)?
DSA C
int x = 15; // binary 1111
int bit = 2;
x = x & ~(1 << bit);
printf("%d\n", x);
A7
B15
C11
D8
Attempts:
2 left
💡 Hint
Clearing a bit means setting it to 0 using AND with the negation of the bit mask.
❓ Predict Output
advanced
2:00remaining
What is the output after toggling the 1st bit?
Given the integer value 10 (binary 1010), what is the output after toggling the 1st bit (0-based from right)?
DSA C
int x = 10; // binary 1010
int bit = 1;
x = x ^ (1 << bit);
printf("%d\n", x);
A14
B8
C10
D12
Attempts:
2 left
💡 Hint
Toggling a bit flips it: if it was 1, it becomes 0; if 0, it becomes 1.
🧠 Conceptual
advanced
2:00remaining
Which operation clears a specific bit in an integer?
You want to clear (set to 0) the bit at position k in an integer x. Which of the following operations correctly does this?
Ax = x | (1 << k);
Bx = x & (1 << k);
Cx = x ^ (1 << k);
Dx = x & ~(1 << k);
Attempts:
2 left
💡 Hint
Clearing a bit means making sure that bit is 0 while keeping others unchanged.
🔧 Debug
expert
2:00remaining
Why does this code fail to toggle the 4th bit?
Consider this code snippet intended to toggle the 4th bit of x: int x = 20; int bit = 4; x = x ^ 1 << bit; printf("%d\n", x); Why might this code not work as expected?
DSA C
int x = 20;
int bit = 4;
x = x ^ 1 << bit;
printf("%d\n", x);
AOperator precedence causes the XOR to apply before the shift, so the wrong bit is toggled.
BThe bit index 4 is out of range for an int, causing undefined behavior.
CThe code is missing parentheses around the shift operation, causing a syntax error.
DThe variable x is not initialized before use.
Attempts:
2 left
💡 Hint
Check operator precedence between ^ and << in C.

Practice

(1/5)
1. What does the operation num |= (1 << k) do to the integer num?
easy
A. Toggles the k-th bit of num
B. Clears the k-th bit of num to 0
C. Checks if the k-th bit of num is set
D. Sets the k-th bit of num to 1

Solution

  1. Step 1: Understand the bit shift operation

    1 << k creates a number with only the k-th bit set to 1 and others 0.
  2. Step 2: Apply bitwise OR to set the bit

    Using num |= (1 << k) sets the k-th bit of num to 1 without changing other bits.
  3. Final Answer:

    Sets the k-th bit of num to 1 -> Option D
  4. Quick Check:

    Set bit = OR with 1 shifted [OK]
Hint: Use OR with 1 shifted to set a bit [OK]
Common Mistakes:
  • Confusing set with clear operation
  • Using AND instead of OR to set bits
  • Misunderstanding bit positions starting from 0
2. Which of the following C statements correctly clears the k-th bit of an integer num?
easy
A. num = num << k;
B. num &= ~(1 << k);
C. num ^= (1 << k);
D. num |= (1 << k);

Solution

  1. Step 1: Understand clearing a bit

    Clearing means setting the bit to 0. We use AND with the complement of the bit mask.
  2. Step 2: Analyze the options

    num &= ~(1 << k); clears the k-th bit by ANDing with all 1s except 0 at k-th bit.
  3. Final Answer:

    num &= ~(1 << k); -> Option B
  4. Quick Check:

    Clear bit = AND with NOT of shifted 1 [OK]
Hint: Use AND with NOT of shifted 1 to clear bit [OK]
Common Mistakes:
  • Using OR instead of AND to clear bits
  • Forgetting to negate the mask
  • Using XOR which toggles instead of clears
3. What is the output of the following C code?
int num = 10; // binary 1010
int k = 1;
num ^= (1 << k);
printf("%d", num);
medium
A. 12
B. 10
C. 8
D. 14

Solution

  1. Step 1: Understand initial value and bit positions

    num = 10 (binary 1010), k = 1 means second bit from right (0-based).
  2. Step 2: Apply XOR to toggle the k-th bit

    Toggle bit 1: bit at position 1 is 1 in 1010, toggling it changes to 0, so binary becomes 1000 which is 8.
  3. Final Answer:

    8 -> Option C
  4. Quick Check:

    Toggle bit 1 in 1010 = 1000 = 8 [OK]
Hint: XOR toggles bit: 1 becomes 0, 0 becomes 1 [OK]
Common Mistakes:
  • Confusing toggle with set or clear
  • Miscounting bit positions starting from 1 instead of 0
  • Assuming XOR always sets bit
4. The following code is intended to clear the 3rd bit of num. What is the error?
int num = 15; // binary 1111
int k = 3;
num = num & (1 << k);
medium
A. It clears all bits except the 3rd bit
B. It sets the 3rd bit instead of clearing
C. It toggles the 3rd bit instead of clearing
D. No error, code works correctly

Solution

  1. Step 1: Analyze the bitwise AND operation

    The code does num & (1 << k), which keeps only the k-th bit and clears others.
  2. Step 2: Understand the intended operation

    To clear the k-th bit, we must AND with the complement of the bit mask, not the mask itself.
  3. Final Answer:

    It clears all bits except the 3rd bit -> Option A
  4. Quick Check:

    AND with mask keeps only that bit, not clears it [OK]
Hint: Clear bit = AND with NOT of mask, not mask alone [OK]
Common Mistakes:
  • Using mask instead of its complement to clear bit
  • Confusing AND with OR for clearing bits
  • Assuming AND with mask clears bit
5. You want to toggle the 0th and 2nd bits of an integer num simultaneously. Which expression correctly does this in C?
hard
A. num ^= (1 << 0) | (1 << 2);
B. num |= (1 << 0) & (1 << 2);
C. num &= ~( (1 << 0) | (1 << 2) );
D. num = (num << 0) ^ (num << 2);

Solution

  1. Step 1: Understand toggling multiple bits

    Toggling bits uses XOR. To toggle multiple bits, XOR with mask having those bits set.
  2. Step 2: Create mask for bits 0 and 2

    Mask is (1 << 0) | (1 << 2), which sets bits 0 and 2 to 1.
  3. Step 3: Apply XOR with mask

    Expression num ^= (1 << 0) | (1 << 2); toggles both bits simultaneously.
  4. Final Answer:

    num ^= (1 << 0) | (1 << 2); -> Option A
  5. Quick Check:

    XOR with combined mask toggles multiple bits [OK]
Hint: XOR with ORed shifted bits toggles multiple bits [OK]
Common Mistakes:
  • Using AND or OR instead of XOR for toggling
  • Incorrectly combining masks with AND
  • Misusing shift operations in toggle
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard