Check if Number is Even or Odd Using Bits in DSA Java - Time & Space Complexity
We want to know how fast we can check 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.
public class EvenOddChecker {
public static boolean isEven(int num) {
return (num & 1) == 0;
}
}
This code checks if a number is even by looking at its last bit.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Bitwise AND operation on the number's last bit.
- How many times: Exactly once per check.
The operation always takes the same time no matter how big the number is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays the same even if the number grows.
Time Complexity: O(1)
This means the check takes the same short time no matter how big the number is.
[X] Wrong: "Checking bits takes longer for bigger numbers because they have more bits."
[OK] Correct: The operation only looks at the last bit, so it always takes the same time.
Knowing this quick bit check shows you understand how computers use bits, which is a handy skill in many coding problems.
"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 betweennumand 1, which isolates the least significant bit (rightmost bit) ofnum.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 if the least significant bit of num is 1, indicating odd number -> Option AQuick Check:
num & 1 = 1 means odd [OK]
- Thinking & 1 shifts bits instead of checking last bit
- Confusing bitwise AND with addition
- Assuming & 1 checks if number is greater than 1
num is even using bitwise operators?Solution
Step 1: Analyze bitwise AND with 1
The expressionnum & 1isolates the least significant bit. If it equals 0, the number is even.Step 2: Check correctness of conditions
if ((num & 1) == 0) { System.out.println("Even"); } correctly checks if(num & 1) == 0to print "Even". Other options misuse bitwise OR, AND with 0, or XOR, which do not correctly check evenness.Final Answer:
if ((num & 1) == 0) { System.out.println("Even"); } -> Option CQuick Check:
num & 1 == 0 means even [OK]
- Using bitwise OR instead of AND
- Comparing with wrong values like 1 when checking even
- Using XOR incorrectly for even check
int num = 7;
if ((num & 1) == 0) {
System.out.println("Even");
} else {
System.out.println("Odd");
}Solution
Step 1: Calculate bitwise AND of num and 1
7 in binary is 0111. 0111 & 0001 = 0001, which equals 1.Step 2: Check condition and print output
Since (num & 1) == 0 is false, the else block executes, printing "Odd".Final Answer:
Odd -> Option DQuick Check:
7 & 1 = 1 means odd [OK]
- Assuming 7 is even
- Confusing bitwise AND with arithmetic AND
- Expecting output 0 or error
int num = 10;
if (num & 1 == 1) {
System.out.println("Odd");
} else {
System.out.println("Even");
}Solution
Step 1: Analyze operator precedence in condition
In Java, == has higher precedence than &. Sonum & 1 == 1is treated asnum & (1 == 1).Step 2: Fix condition with parentheses
Since (1 == 1) is true (boolean),num & trueis invalid. Correct syntax is(num & 1) == 1.Final Answer:
Missing parentheses around (num & 1) -> Option BQuick Check:
Use parentheses to ensure correct bitwise operation [OK]
- Ignoring operator precedence causing syntax errors
- Using bitwise OR instead of AND
- Assuming code compiles without parentheses
isEven(int num) that returns true if num is even and false if odd, using bitwise operators. Which implementation is correct?Solution
Step 1: Understand bitwise check for even
Even numbers have least significant bit 0, so(num & 1) == 0returns true for even numbers.Step 2: Evaluate each option
public boolean isEven(int num) { return (num & 1) == 0; } correctly returns true ifnumis even. Options A, B, and D use incorrect bitwise operations that do not reliably check evenness.Final Answer:
public boolean isEven(int num) { return (num & 1) == 0; } -> Option AQuick Check:
Use (num & 1) == 0 to return true for even [OK]
- Using bitwise OR or XOR incorrectly
- Comparing with wrong values
- Returning wrong boolean for even check
Ready to prove it?
Pass the test and this pattern moves unknown
