Effectivement. Un nombre signé
% 16, c'est lent parce que le modulo se comporte bizarrement avec les nombres négatifs en C (et le compilateur ne peut pas savoir si le nombre peut être négatif quand il est signé).
Personnellement, je conseille
!(x&15) tout simplement, il vaut mieux écrire ce qu'on pense vraiment (ce qu'on pense vraiment étant qu'on veut du code rapide et compact

) que faire confiance au compilateur, et on ne risque pas de se tromper avec les histoires de signé ou non.