How to check if an integer contains an even or odd number of bits set in PHP

2 Answers

0 votes
$num = 42; // 00101010

$result = countBits($num) % 2;

echo "0 = even number of bits set\n";
echo "1 = odd number of bits set\n";
echo "result: " . $result . "\n";

// Equivalent to Java's Integer.bitCount
function countBits($n) {
    $count = 0;
    
    while ($n != 0) {
        $count += $n & 1;
        $n >>= 1;
    }
    
    return $count;
}



/*
run:

0 = even number of bits set
1 = odd number of bits set
result: 1

*/

 



answered Jul 27, 2025 by avibootz
0 votes
$num = 42; // 00101010

// Convert number to binary string and count 1s
$result = substr_count(decbin($num), '1') % 2;

echo "0 = even number of bits set\n";
echo "1 = odd number of bits set\n";
echo "result: " . $result . "\n";



/*
run:

0 = even number of bits set
1 = odd number of bits set
result: 1

*/

 



answered Jul 27, 2025 by avibootz
...