maxが 2の累乗で表せる数なら
a &= max - 1;
がいいかもしれないね。
勘違いしてたらごめん。