xkè secondo voi quest'istruzione mi restituisce valori a caso?

$tmp = $q->record[1];
$checked = ($dett_trasp & $tmp)?"checked":"";

praticamente fino a 64 funziona, poi appena $tmp ha come valori maggiori, invece che dare 1 o 0 mi restituisce 12, 004, 100 e valori così...

come mai?

in $q ho la lista dei permessi, quindi una lista binaria (1 2 4 8 16 ecc)

però appunto nn funziona con valori + alti...