1313 * - If (N & 1) == 0, N is even.
1414 * - If (N & 1) == 1, N is odd.
1515 *
16+ * Example:
17+ * Consider 8-bit binary representations of two numbers:
18+ * Number: 10 (decimal) -> 00001010 (binary)
19+ * LSB = 0 -> Even number
20+ *
21+ * Number: 13 (decimal) -> 00001101 (binary)
22+ * LSB = 1 -> Odd number
23+ *
24+ * In both cases, evaluating (N & 1) isolates the LSB:
25+ * - For 10: 00001010 & 00000001 = 0 (Even)
26+ * - For 13: 00001101 & 00000001 = 1 (Odd)
27+ *
1628 * Worst Case Time Complexity: O(1)
1729 * Space Complexity: O(1)
1830 *
@@ -41,7 +53,7 @@ namespace even_odd {
4153 * @returns "Even" if N is even, "Odd" if N is odd.
4254 */
4355 std::string is_even (std::int64_t N) {
44- return (N & 1 ) == 0 ;
56+ return (N & 1 ) == 0 ? " Even " : " Odd " ;
4557 }
4658
4759 } // namespace even_odd
@@ -52,21 +64,21 @@ namespace even_odd {
5264 * @returns void
5365 */
5466static void test () {
55- using bit_manipulation::even_odd::checkEvenOdd ;
67+ using bit_manipulation::even_odd::is_even ;
5668
5769 // Test Even numbers
58- assert (checkEvenOdd (0 ) == " Even" );
59- assert (checkEvenOdd (2 ) == " Even" );
60- assert (checkEvenOdd (100 ) == " Even" );
61- assert (checkEvenOdd (-4 ) == " Even" );
62- assert (checkEvenOdd (-1000 ) == " Even" );
70+ assert (is_even (0 ) == " Even" );
71+ assert (is_even (2 ) == " Even" );
72+ assert (is_even (100 ) == " Even" );
73+ assert (is_even (-4 ) == " Even" );
74+ assert (is_even (-1000 ) == " Even" );
6375
6476 // Test Odd numbers
65- assert (checkEvenOdd (1 ) == " Odd" );
66- assert (checkEvenOdd (3 ) == " Odd" );
67- assert (checkEvenOdd (101 ) == " Odd" );
68- assert (checkEvenOdd (-5 ) == " Odd" );
69- assert (checkEvenOdd (-999 ) == " Odd" );
77+ assert (is_even (1 ) == " Odd" );
78+ assert (is_even (3 ) == " Odd" );
79+ assert (is_even (101 ) == " Odd" );
80+ assert (is_even (-5 ) == " Odd" );
81+ assert (is_even (-999 ) == " Odd" );
7082
7183 std::cout << " All test cases successfully passed!" << std::endl;
7284}
0 commit comments