non vorrei dire na sciocchezza
ma base_convert restituisce una stringa. Quindi tu poi fai l'or su due stringhe e non su due byte
E poi perche' converti da base 16 a base due?
Al limite dovresti fare
$b = base_convert (7, 10, 2);
prova qualcosa del genere.
$test = 37|7;
echo base_convert ($test, 10, 2);