Bird
Raised Fist0
DSA Goprogramming~20 mins

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

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bit Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output after setting a specific bit
What is the output of the following Go code that sets the 3rd bit (0-based) of the number 8?
DSA Go
package main
import "fmt"
func main() {
    var num uint = 8
    var pos uint = 3
    num = num | (1 << pos)
    fmt.Println(num)
}
A16
B8
C24
D0
Attempts:
2 left
💡 Hint
Remember that setting a bit means turning that bit to 1 using OR operation.
❓ Predict Output
intermediate
2:00remaining
Output after clearing a specific bit
What is the output of this Go code that clears the 2nd bit (0-based) of the number 15?
DSA Go
package main
import "fmt"
func main() {
    var num uint = 15
    var pos uint = 2
    num = num &^ (1 << pos)
    fmt.Println(num)
}
A8
B7
C11
D15
Attempts:
2 left
💡 Hint
Clearing a bit means turning that bit to 0 using AND NOT operation.
❓ Predict Output
advanced
2:00remaining
Output after toggling a specific bit
What is the output of this Go code that toggles the 1st bit (0-based) of the number 10?
DSA Go
package main
import "fmt"
func main() {
    var num uint = 10
    var pos uint = 1
    num = num ^ (1 << pos)
    fmt.Println(num)
}
A8
B14
C12
D10
Attempts:
2 left
💡 Hint
Toggling a bit flips it: 0 to 1 or 1 to 0 using XOR operation.
🧠 Conceptual
advanced
1:30remaining
Understanding bit position indexing
In bit manipulation, if we say 'set the 4th bit' of a number using 0-based indexing, which bit are we referring to?
AThe bit at position 4 counting from the left, starting at 1
BThe bit at position 3 counting from the right, starting at 1
CThe bit at position 5 counting from the left, starting at 0
DThe bit at position 4 counting from the right, starting at 0
Attempts:
2 left
💡 Hint
0-based indexing means counting starts at 0 from the right (least significant bit).
🔧 Debug
expert
2:30remaining
Identify the error in toggling a bit
What error will this Go code produce when trying to toggle the 5th bit of a number?
DSA Go
package main
import "fmt"
func main() {
    var num uint = 20
    var pos int = -1
    num = num ^ (1 << pos)
    fmt.Println(num)
}
ACompile-time error: negative shift count
BNo error, output is 20
CRuntime panic: index out of range
DCompile-time error: type mismatch
Attempts:
2 left
💡 Hint
Shifting by a negative number is invalid in Go.

Practice

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

Solution

  1. Step 1: Understand bit shifting

    The expression 1 << 3 shifts 1 left by 3 bits, resulting in binary 00001000, which targets the 4th bit.
  2. Step 2: Apply bitwise OR to set bit

    Using |= with this mask sets the 4th bit of num to 1 without changing other bits.
  3. Final Answer:

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

    Set bit = |= (1 << position) [OK]
Hint: Use OR with shifted 1 to set a bit [OK]
Common Mistakes:
  • Confusing set with clear operation
  • Using wrong bit position (off by one)
  • Thinking it toggles instead of sets
2. Which of the following Go code snippets correctly clears the 2nd bit (bit index 1) of an integer variable num?
easy
A. num &= (1 << 1)
B. num |= (1 << 1)
C. num &= ^(1 << 1)
D. num ^= (1 << 1)

Solution

  1. Step 1: Identify clearing operation

    To clear a bit, we AND num with the inverse mask that has 0 at the target bit and 1 elsewhere.
  2. Step 2: Use bitwise AND with negated mask

    ^(1 << 1) creates a mask with all bits 1 except the 2nd bit 0. ANDing clears that bit.
  3. Final Answer:

    num &= ^(1 << 1) -> Option C
  4. Quick Check:

    Clear bit = &= ^(1 << position) [OK]
Hint: Use AND with negated shifted 1 to clear bit [OK]
Common Mistakes:
  • Using OR instead of AND to clear
  • Not negating the mask
  • Confusing bit index counting
3. What is the output of the following Go code?
package main
import "fmt"
func main() {
    num := 10 // binary 1010
    num ^= (1 << 1)
    fmt.Println(num)
}
medium
A. 10
B. 8
C. 12
D. 14

Solution

  1. Step 1: Understand initial value and bit positions

    Number 10 in binary is 1010. Bit positions (0-based) from right: bit0=0, bit1=1, bit2=0, bit3=1.
  2. Step 2: Toggle 2nd bit (bit index 1) using XOR

    XOR with (1 << 1) toggles bit1. Bit1 is 1, toggling it changes to 0. New binary: 1000 which is 8.
  3. Final Answer:

    8 -> Option B
  4. Quick Check:

    Toggle bit = ^= (1 << position) [OK]
Hint: XOR toggles bit: 1->0 or 0->1 [OK]
Common Mistakes:
  • Confusing toggle with set or clear
  • Misreading bit positions
  • Calculating decimal incorrectly
4. The following Go code is intended to clear the 3rd bit (bit index 2) of num. What is the error?
num := 15
num &= (1 << 2)
medium
A. It sets the 3rd bit instead of clearing it
B. No error, it correctly clears the 3rd bit
C. It toggles the 3rd bit instead of clearing
D. It clears all bits except the 3rd bit

Solution

  1. Step 1: Analyze the operation performed

    The code does num &= (1 << 2), which ANDs num with 00000100 (only 3rd bit set).
  2. Step 2: Understand effect on bits

    This clears all bits except the 3rd bit, effectively keeping only the 3rd bit if it was set, not clearing it.
  3. Final Answer:

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

    Clear bit = &= ^(1 << position) [OK]
Hint: Use AND with negated mask to clear bit [OK]
Common Mistakes:
  • Using AND with mask instead of negated mask
  • Confusing clear with set or toggle
  • Assuming &= (1 << n) clears bit
5. You have an integer num initially 0. You want to toggle the 1st bit, set the 3rd bit, and clear the 2nd bit in this order. Which sequence of operations achieves this correctly in Go?
hard
A. num ^= (1 << 0); num |= (1 << 2); num &= ^(1 << 1)
B. num |= (1 << 0); num ^= (1 << 2); num &= ^(1 << 1)
C. num &= ^(1 << 1); num ^= (1 << 0); num |= (1 << 2)
D. num |= (1 << 2); num ^= (1 << 0); num &= ^(1 << 1)

Solution

  1. Step 1: Toggle 1st bit (bit 0)

    Use XOR with (1 << 0) to toggle the 1st bit: num ^= (1 << 0).
  2. Step 2: Set 3rd bit (bit 2)

    Use OR with (1 << 2) to set the 3rd bit: num |= (1 << 2).
  3. Step 3: Clear 2nd bit (bit 1)

    Use AND with negated mask to clear 2nd bit: num &= ^(1 << 1).
  4. Final Answer:

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

    Toggle, Set, Clear in order with ^=, |=, &= ^ [OK]
Hint: Toggle ^=, Set |=, Clear &= ^ in correct order [OK]
Common Mistakes:
  • Mixing order of operations
  • Using wrong operators for each action
  • Not negating mask when clearing
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