Bird
Raised Fist0
DSA Cprogramming

Check if Number is Even or Odd Using Bits in DSA C

Choose your learning style10 modes available
Mental Model
Every number in computers is stored in bits, and the last bit tells if a number is even or odd. If the last bit is 0, the number is even; if 1, it is odd.
Analogy: Think of a row of light switches representing bits. The last switch controls whether the number is even or odd. If the last switch is off (0), the number is even; if on (1), the number is odd.
Number bits:  ... b3 b2 b1 b0
                  ↑
               last bit
Dry Run Walkthrough
Input: number = 5
Goal: Determine if 5 is even or odd using bit operations
Step 1: Perform bitwise AND of number 5 with 1
5 in bits: 0101
1 in bits:  0001
AND result:  0001
Why: AND with 1 isolates the last bit to check if it is 0 or 1
Step 2: Check if AND result is 0 or 1
AND result = 1
Why: If result is 1, number is odd; if 0, number is even
Result:
5 is odd because last bit is 1
Annotated Code
DSA C
#include <stdio.h>

// Function to check even or odd using bitwise AND
const char* checkEvenOdd(int num) {
    if ((num & 1) == 0) {
        return "Even";
    } else {
        return "Odd";
    }
}

int main() {
    int number = 5;
    printf("%d is %s\n", number, checkEvenOdd(number));
    return 0;
}
if ((num & 1) == 0) {
Check last bit by ANDing with 1 to determine even or odd
return "Even";
Return Even if last bit is 0
return "Odd";
Return Odd if last bit is 1
OutputSuccess
5 is Odd
Complexity Analysis
Time: O(1) because bitwise AND is a single operation regardless of number size
Space: O(1) because no extra memory is used besides input and output
vs Alternative: Compared to using modulo (%) operator which also runs in O(1), bitwise AND is often faster and more direct at hardware level
Edge Cases
number = 0
Returns Even because 0's last bit is 0
DSA C
if ((num & 1) == 0) {
number = -2
Returns Even because bitwise AND checks last bit regardless of sign
DSA C
if ((num & 1) == 0) {
number = 1
Returns Odd because last bit is 1
DSA C
if ((num & 1) == 0) {
When to Use This Pattern
When you need to quickly check if a number is even or odd without division, use bitwise AND with 1 because it directly inspects the last bit.
Common Mistakes
Mistake: Using modulo operator (%) instead of bitwise AND for checking even/odd
Fix: Use (num & 1) == 0 for faster and simpler check
Mistake: Checking if (num & 1) == 1 to decide even, which is reversed
Fix: Remember (num & 1) == 0 means even, else odd
Summary
Checks if a number is even or odd by looking at its last bit using bitwise AND.
Use when you want a fast, simple way to test evenness without division or modulo.
The last bit of a number tells if it is even (0) or odd (1).

Practice

(1/5)
1. Which bit operation can be used to check if a number is even or odd?
easy
A. Shift the number right by 1
B. Check the least significant bit using AND with 1
C. XOR the number with 1
D. Invert all bits of the number

Solution

  1. Step 1: Understand the least significant bit (LSB)

    The LSB of a binary number determines if it is even or odd: 0 means even, 1 means odd.
  2. Step 2: Use AND operation with 1 to isolate LSB

    Performing bitwise AND with 1 keeps only the LSB. If result is 0, number is even; if 1, odd.
  3. Final Answer:

    Check the least significant bit using AND with 1 -> Option B
  4. Quick Check:

    LSB & 1 = 0 (even) or 1 (odd) [OK]
Hint: Use n & 1 to check even or odd quickly [OK]
Common Mistakes:
  • Using XOR instead of AND to check LSB
  • Checking the most significant bit instead
  • Using bit shift without checking bits
2. Which of the following C code snippets correctly checks if an integer n is odd using bitwise operators?
easy
A. if ((n & 1) == 1) printf("Odd");
B. if ((n >> 1) == 1) printf("Odd");
C. if ((n & 1) == 0) printf("Odd");
D. if ((n ^ 1) == 1) printf("Odd");

Solution

  1. Step 1: Understand bitwise AND with 1

    Using n & 1 isolates the least significant bit. If it equals 1, the number is odd.
  2. Step 2: Check condition for odd number

    The correct condition is (n & 1) == 1 to print "Odd".
  3. Final Answer:

    if ((n & 1) == 1) printf("Odd"); -> Option A
  4. Quick Check:

    n & 1 == 1 means odd [OK]
Hint: Use (n & 1) == 1 to detect odd numbers [OK]
Common Mistakes:
  • Checking for == 0 to print odd (actually even)
  • Using right shift instead of AND
  • Using XOR incorrectly for odd check
3. What is the output of the following C code?
int n = 14;
if (n & 1)
    printf("Odd");
else
    printf("Even");
medium
A. Odd
B. Compilation error
C. Even
D. 14

Solution

  1. Step 1: Evaluate n & 1 for n = 14

    Binary of 14 is 1110. The least significant bit is 0. So, 14 & 1 = 0.
  2. Step 2: Check the if condition

    Since (n & 1) is 0 (false), the else block executes, printing "Even".
  3. Final Answer:

    Even -> Option C
  4. Quick Check:

    14 is even, so output is Even [OK]
Hint: Check LSB: 0 means even, 1 means odd [OK]
Common Mistakes:
  • Assuming 14 is odd because it ends with 4
  • Confusing bitwise AND with logical AND
  • Expecting output "14" instead of even/odd
4. Identify the error in this C code snippet that checks if a number is odd:
int n = 7;
if (n & 1 == 1)
    printf("Odd");
else
    printf("Even");
medium
A. Missing parentheses around (n & 1)
B. Using == instead of = in if condition
C. Incorrect use of bitwise OR instead of AND
D. No error, code works fine

Solution

  1. Step 1: Analyze operator precedence in condition

    In C, == has higher precedence than &. So expression is evaluated as n & (1 == 1).
  2. Step 2: Evaluate the expression and fix

    Since (1 == 1) is true (1), expression becomes n & 1, which is correct but confusing. To avoid this, parentheses should be used: (n & 1) == 1.
  3. Final Answer:

    Missing parentheses around (n & 1) -> Option A
  4. Quick Check:

    Use (n & 1) == 1 to ensure correct evaluation [OK]
Hint: Use parentheses: (n & 1) == 1 to avoid precedence errors [OK]
Common Mistakes:
  • Ignoring operator precedence causing wrong evaluation
  • Using assignment = instead of comparison ==
  • Confusing bitwise AND with logical AND
5. You want to write a function in C that returns 1 if a number is odd and 0 if even, using bitwise operators. Which of the following implementations is correct and efficient?
int isOdd(int n) {
    // Choose one
}
hard
A. return (n >> 1) & 1;
B. return !(n & 1);
C. return n ^ 1;
D. return (n & 1) == 1 ? 1 : 0;

Solution

  1. Step 1: Understand the goal of the function

    The function should return 1 if n is odd, 0 if even, using bitwise operations.
  2. Step 2: Evaluate each option

    return (n & 1) == 1 ? 1 : 0; correctly returns 1 if LSB is 1 (odd), else 0. return (n >> 1) & 1; returns the second least significant bit, incorrect. return n ^ 1; returns n XOR 1, which changes the number, not a boolean. return !(n & 1); returns 1 if even, opposite of requirement.
  3. Final Answer:

    return (n & 1) == 1 ? 1 : 0; -> Option D
  4. Quick Check:

    Use (n & 1) == 1 to detect odd and return 1 [OK]
Hint: Return (n & 1) == 1 for odd check function [OK]
Common Mistakes:
  • Using bit shift instead of checking LSB
  • Returning modified number instead of boolean
  • Negating the condition incorrectly
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