Bird
Raised Fist0
DSA C#programming~3 mins

Why Set Clear Toggle a Specific Bit in DSA C#?

Choose your learning style10 modes available
The Big Idea

What if you could flip a single switch in a huge control panel instantly and without mistakes?

The Scenario

Imagine you have a long list of light switches, each representing a feature turned on or off in a device. You want to change just one switch without touching the others.

The Problem

Manually checking and changing each switch one by one is slow and easy to mess up. You might accidentally flip the wrong switch or forget to change the right one.

The Solution

Using bit operations lets you directly set, clear, or toggle a specific switch (bit) quickly and safely without affecting others.

Before vs After
✗ Before
int flags = 0;
// To turn on switch 3
flags = flags | (1 << 3);
✓ After
int flags = 0;
flags |= (1 << 3); // Set bit 3
What It Enables

This lets you control individual features efficiently using just numbers, saving time and avoiding mistakes.

Real Life Example

In video games, bit flags track which achievements a player unlocked. Setting or clearing a bit updates achievements instantly.

Key Takeaways

Manual changes to individual bits are slow and error-prone.

Bit operations let you change one bit without affecting others.

This makes feature control fast, safe, and memory-efficient.

Practice

(1/5)
1. What does the operation number |= (1 << position) do to the bit at position in number?
easy
A. Toggles the bit at position
B. Clears the bit at position to 0
C. Sets the bit at position to 1
D. Checks if the bit at position is set

Solution

  1. Step 1: Understand the bitwise OR with shifted 1

    The expression 1 << position creates a number with only the bit at position set to 1. Using OR (|=) with this sets that bit in number to 1 without changing other bits.
  2. Step 2: Effect on the bit at position

    Since OR with 1 always results in 1, the bit at position is set to 1 regardless of its previous value.
  3. Final Answer:

    Sets the bit at position to 1 -> Option C
  4. Quick Check:

    OR with 1 sets bit [OK]
Hint: Use OR with shifted 1 to set a bit [OK]
Common Mistakes:
  • Confusing OR with XOR for toggling
  • Thinking it clears the bit
  • Assuming it checks the bit instead
2. Which of the following C# statements correctly clears (sets to 0) the bit at position pos in an integer num?
easy
A. num &= ~(1 << pos);
B. num |= (1 << pos);
C. num ^= (1 << pos);
D. num = num << pos;

Solution

  1. Step 1: Understand clearing a bit

    To clear a bit, we use AND with the complement of a mask that has 1 at the target bit. The mask is 1 << pos, so complement is ~(1 << pos).
  2. Step 2: Apply AND with complemented mask

    Using num &= ~(1 << pos); clears the bit at pos while leaving others unchanged.
  3. Final Answer:

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

    AND with complement clears bit [OK]
Hint: Use AND with NOT mask to clear a bit [OK]
Common Mistakes:
  • Using OR instead of AND to clear
  • Using XOR which toggles instead of clears
  • Using left shift alone which changes number
3. What is the output of the following C# code?
int num = 10; // binary 1010
int pos = 1;
num ^= (1 << pos);
Console.WriteLine(num);
medium
A. 10
B. 14
C. 12
D. 8

Solution

  1. Step 1: Understand initial number and bit position

    Number 10 in binary is 1010. Position 1 means the second bit from right (0-based). Bit at position 1 is 1.
  2. Step 2: Apply XOR to toggle bit at position 1

    XOR toggles the bit. Since bit at position 1 is 1, toggling it changes it to 0. New binary is 1000 which is decimal 8.
  3. Final Answer:

    8 -> Option D
  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 XOR with OR or AND
  • Miscounting bit positions (0-based)
  • Assuming no change if bit is 1
4. The following code is intended to toggle the bit at position pos in num. What is the error?
int num = 5; // binary 0101
int pos = 2;
num = num & (1 << pos);
Console.WriteLine(num);
medium
A. It clears all bits except the one at pos
B. It toggles the bit correctly
C. It sets the bit at pos to 1
D. It causes a syntax error

Solution

  1. Step 1: Analyze the operation used

    The code uses AND (&) with 1 << pos. This keeps only the bit at pos if it was set, clearing all others.
  2. Step 2: Compare with toggle operation

    Toggling requires XOR (^), not AND. So this code does not toggle but masks all bits except the one at pos.
  3. Final Answer:

    It clears all bits except the one at pos -> Option A
  4. Quick Check:

    AND with mask keeps only that bit [OK]
Hint: Use XOR to toggle, AND masks bits [OK]
Common Mistakes:
  • Using AND instead of XOR for toggle
  • Expecting toggle but getting masked value
  • Confusing bitwise operators
5. You have an integer num and want to toggle the bit at position pos only if it is currently set (1). Which code snippet correctly does this?
hard
A. if ((num ^ (1 << pos)) != 0) num ^= (1 << pos);
B. if ((num & (1 << pos)) != 0) num ^= (1 << pos);
C. if ((num & ~(1 << pos)) != 0) num ^= (1 << pos);
D. if ((num | (1 << pos)) != 0) num ^= (1 << pos);

Solution

  1. Step 1: Check if bit at pos is set

    Using num & (1 << pos) checks if bit at pos is 1. If result is not zero, bit is set.
  2. Step 2: Toggle bit only if set

    If bit is set, toggle it using XOR: num ^= (1 << pos);. This flips the bit from 1 to 0.
  3. Final Answer:

    if ((num & (1 << pos)) != 0) num ^= (1 << pos); -> Option B
  4. Quick Check:

    Check bit with AND, toggle with XOR [OK]
Hint: Check bit with AND before toggling with XOR [OK]
Common Mistakes:
  • Using OR instead of AND to check bit
  • Toggling without checking bit first
  • Using incorrect mask complement
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