Interview Question Series | Season 2

Problem: Check if a number is even or odd using bitwise operations

You are given an integer number. Your task is to determine whether the number is even or odd using the bitwise AND operator (&) without using the modulus operator (%).

Input:

  • A single integer number (−10^9 ≤ number ≤ 10^9).

Output:

  • Print number is even. if the number is even.
  • Print number is odd. if the number is odd.

Example 1:

Input:

Enter an integer: 7

Output:

7 is odd.

Example 2:

Input:

Enter an integer: 12

Output:

12 is even.

Hint:

  • The least significant bit (LSB) of an odd number is 1, while for an even number, it is 0. You can use the bitwise AND operator to check the LSB.

Constraints:

  • The integer is within the range −10^9 ≤ number ≤ 10^9.

Code:

#include <stdio.h>

int main() {
    int number;
    printf("Enter an integer: ");
    scanf("%d", &number);
    
    // Check if the least significant bit is 1 (odd) or 0 (even)
    if ((number & 1) == 1) {
        printf("%d is odd.n", number);
    } else {
        printf("%d is even.n", number);
    }
    
    return 0;
}

Explanation of the Code:

  • Bitwise AND (&) with 1:
    • The least significant bit (LSB) of any odd number is 1, and the LSB of any even number is 0.
    • By performing number & 1, you isolate the LSB.
    • If the result is 1, the number is odd; if it’s 0, the number is even.

This approach avoids using the modulus operator (%) and works efficiently with bitwise operations.

Scroll to Top