📖 Scenario: Imagine you are working on a simple embedded device that controls lights. You want to turn lights on and off quickly and efficiently using numbers. Bit manipulation lets you do this fast and with less memory than normal math.
🎯 Goal: You will learn how to use bit manipulation to double a number and check if a number is even or odd. This will show why bit manipulation can be faster and simpler than normal arithmetic.
📋 What You'll Learn
Create a variable called number with the value 6
Create a variable called doubled that uses bit shifting to double number
Create a variable called isEven that uses bitwise AND to check if number is even
Print the values of number, doubled, and isEven
💡 Why This Matters
🌍 Real World
Embedded systems, game programming, and performance-critical code often use bit manipulation to save time and memory.
💼 Career
Understanding bit manipulation helps in low-level programming, optimizing code, and working with hardware or network protocols.
Progress0 / 4 steps
1
Create the initial number variable
Create a variable called number and set it to 6
DSA Go
Hint
Use number := 6 to create the variable.
2
Double the number using bit shifting
Create a variable called doubled that uses left bit shift number << 1 to double number
DSA Go
Hint
Use doubled := number << 1 to double the number.
3
Check if the number is even using bitwise AND
Create a variable called isEven that uses number & 1 == 0 to check if number is even
DSA Go
Hint
Use isEven := number&1 == 0 to check evenness.
4
Print the results
Print the values of number, doubled, and isEven using fmt.Println
DSA Go
Hint
Use fmt.Println("number:", number) and similar lines to print.
Practice
(1/5)
1. Why is bit manipulation often faster than arithmetic operations like multiplication or division?
easy
A. Because bit manipulation uses more memory which speeds up processing
B. Because arithmetic operations are not supported by modern CPUs
C. Because bit manipulation uses simple CPU instructions that run in constant time
D. Because arithmetic operations always cause errors in calculations
Solution
Step 1: Understand CPU instruction speed
Bit manipulation uses basic CPU instructions like AND, OR, XOR, shifts which are very fast and usually take one CPU cycle.
Step 2: Compare with arithmetic operations
Multiplication and division are more complex and take multiple CPU cycles, making them slower than bit operations.
Final Answer:
Because bit manipulation uses simple CPU instructions that run in constant time -> Option C
Quick Check:
Bit ops faster than arithmetic [OK]
Hint: Bit ops use simple CPU steps, so they run faster [OK]
Common Mistakes:
Thinking arithmetic is always faster
Confusing memory use with speed
Believing CPUs don't support arithmetic
2. Which of the following Go code snippets correctly uses bit manipulation to multiply an integer by 8?
easy
A. result := num >> 3
B. result := num << 3
C. result := num & 8
D. result := num ^ 8
Solution
Step 1: Understand bit shift left operation
Shifting bits left by 3 positions multiplies the number by 2^3 = 8.
Step 2: Check other operations
Right shift divides, AND masks bits, XOR toggles bits, so they don't multiply by 8.
Final Answer:
result := num << 3 -> Option B
Quick Check:
Left shift by 3 multiplies by 8 [OK]
Hint: Use << 3 to multiply by 8 quickly [OK]
Common Mistakes:
Using >> instead of << for multiplication
Using & or ^ which do not multiply
Confusing shift count with multiplication factor
3. What is the output of the following Go code?
num := 12
result := (num & 7) << 1
fmt.Println(result)
medium
A. 8
B. 10
C. 14
D. 24
Solution
Step 1: Calculate num & 7
12 in binary is 1100, 7 is 0111. Bitwise AND: 1100 & 0111 = 0100 (decimal 4).
Step 2: Shift left by 1
4 << 1 means 4 * 2 = 8.
Final Answer:
8 -> Option A
Quick Check:
(12 & 7) << 1 = 8 [OK]
Hint: AND then shift left doubles the masked value [OK]
Common Mistakes:
Misreading binary AND result
Confusing left shift with right shift
Calculating decimal incorrectly
4. Find the error in this Go code that tries to check if a number is even using bit manipulation:
func isEven(num int) bool {
return num & 1 == 0
}
medium
A. Missing parentheses around bitwise operation
B. Incorrect operator precedence causes wrong result
C. Bitwise AND cannot be used with integers
D. No error, code works correctly
Solution
Step 1: Understand operator precedence in Go
Bitwise AND (&) has higher precedence than ==, so expression evaluates as (num & 1) == 0 correctly.
Step 2: Check if code logic is correct
Checking if last bit is 0 means number is even, so function returns true for even numbers.
Final Answer:
No error, code works correctly -> Option D
Quick Check:
Bitwise AND with 1 checks evenness correctly [OK]
Hint: Bitwise AND with 1 checks last bit correctly [OK]
Common Mistakes:
Assuming operator precedence error
Thinking bitwise AND can't be used with ints
Adding unnecessary parentheses
5. You want to quickly check if a number is a power of two using bit manipulation in Go. Which expression correctly does this?
func isPowerOfTwo(num int) bool {
return ???
}
hard
A. num & (num - 1) == 0 && num != 0
B. num | (num - 1) == 0
C. num ^ (num - 1) == 0
D. num & (num + 1) == 0
Solution
Step 1: Recall power of two property
A power of two has exactly one bit set. num & (num - 1) clears the lowest set bit.
Step 2: Check expression meaning
If num is power of two, num & (num - 1) == 0. Also check num != 0 to exclude zero.
Step 3: Verify other options
OR, XOR, and & with (num + 1) do not correctly test power of two.
Final Answer:
num & (num - 1) == 0 && num != 0 -> Option A
Quick Check:
Power of two test uses num & (num-1) = 0 [OK]
Hint: Use num & (num-1) == 0 to test power of two [OK]
Common Mistakes:
Using OR or XOR instead of AND
Not checking num != 0
Using num + 1 instead of num - 1
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.