Check if Number is Even or Odd Using Bits in DSA Go - Time & Space Complexity
We want to see how fast we can tell if a number is even or odd using bits.
How does the time to check change as the number gets bigger?
Analyze the time complexity of the following code snippet.
func isEven(num int) bool {
return (num & 1) == 0
}
This code checks the last bit of the number to decide if it is even or odd.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Bitwise AND operation on the number and 1.
- How many times: Exactly once per function call, no loops or recursion.
Checking the last bit takes the same time no matter how big the number is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 operation |
| 100 | 1 operation |
| 1000 | 1 operation |
Pattern observation: The number size does not affect the time; it stays constant.
Time Complexity: O(1)
This means the check takes the same tiny amount of time no matter how big the number is.
[X] Wrong: "Checking bits takes longer for bigger numbers because they have more bits."
[OK] Correct: We only look at the last bit, so the size of the number does not matter.
Knowing this quick bit check shows you understand how computers work with numbers efficiently.
"What if we checked multiple bits to find if a number is divisible by 4? How would the time complexity change?"
Practice
num & 1 check when determining if a number is even or odd?Solution
Step 1: Understand bitwise AND operation
The expressionnum & 1performs a bitwise AND between the number and 1, which isolates the least significant bit (rightmost bit).Step 2: Interpret the least significant bit
If the least significant bit is 1, the number is odd; if it is 0, the number is even.Final Answer:
It checks the least significant bit to see if it is 1 (odd) or 0 (even). -> Option AQuick Check:
num & 1 = 1 means odd, 0 means even [OK]
- Thinking & 1 divides the number
- Confusing bitwise AND with addition
- Assuming it checks if number > 1
n is odd using bitwise operations?Solution
Step 1: Analyze bitwise AND usage
The correct way to check oddness is using bitwise AND with 1:n & 1. This isolates the least significant bit.Step 2: Check condition correctness
if n & 1 == 1 { fmt.Println("Odd") } usesn & 1 == 1, which is true if the number is odd. Other options use incorrect operators or values.Final Answer:
if n & 1 == 1 { fmt.Println("Odd") } -> Option DQuick Check:
Use & 1 == 1 to check odd [OK]
- Using bitwise OR instead of AND
- Comparing with 0 instead of 1
- Using XOR which changes bits
package main
import "fmt"
func main() {
n := 14
if n & 1 == 0 {
fmt.Println("Even")
} else {
fmt.Println("Odd")
}
}Solution
Step 1: Evaluate bitwise AND for n=14
14 in binary is 1110. The least significant bit is 0. So, 14 & 1 = 0.Step 2: Check the if condition
Since 14 & 1 == 0, the condition is true, so it prints "Even".Final Answer:
Even -> Option AQuick Check:
14 & 1 = 0 means Even [OK]
- Assuming 14 is odd
- Confusing bitwise AND with arithmetic AND
- Expecting output to be the number itself
package main
import "fmt"
func main() {
num := 7
if num & 1 = 1 {
fmt.Println("Odd")
} else {
fmt.Println("Even")
}
}Solution
Step 1: Identify the if condition syntax
The condition uses single '=' which is assignment, not comparison. It should be '==' to compare values.Step 2: Understand Go syntax rules
Go requires '==' for equality checks. Using '=' in if condition causes a compilation error.Final Answer:
Using single '=' instead of '==' in if condition -> Option BQuick Check:
Use '==' for comparison, not '=' [OK]
- Using '=' instead of '==' in conditions
- Confusing bitwise AND with logical AND
- Forgetting to declare variables
IsEven that returns true if a number is even and false if odd, using bitwise operations. Which of the following implementations is correct?Solution
Step 1: Understand even number bit pattern
Even numbers have least significant bit 0, son & 1equals 0 for even numbers.Step 2: Verify the correct implementation
func IsEven(n int) bool { return n & 1 == 0 }is correct because even numbers have LSB 0. The implementation returningn & 1 == 1checks for odd. The bitwise OR and right shift implementations are incorrect for checking evenness.Final Answer:
func IsEven(n int) bool { return n & 1 == 0 } -> Option CQuick Check:
Return true if n & 1 == 0 for even [OK]
- Returning true for odd numbers instead of even
- Using right shift incorrectly
- Using bitwise OR instead of AND
Ready to prove it?
Pass the test and this pattern moves unknown
