Скорее всего, бит, который вы тестируете, "более постоянен", чем тот, с которым вы тестируете. Таким образом, вы можете сделать константы для бита, что означает, что вы должны сделать сдвиг только один раз. Например:
static final int LEFT_WALL = 1 << 1;
static final int RIGHT_WALL = 1 << 2;
static final int BOTTOM_WALL = 1 << 3;
static final int TOP_WALL = 1 << 4;
Тогда в вашем цикле вы просто проверяете
if ((integer & LEFT_WALL) != 0)
// left wall collision
if ((integer & RIGHT_WALL) != 0)
// right wall collision
...
Таким образом, вы выполняете только две операции (побитовое И и сравнение) в цикле, а не три (сдвиг, И и сравнение).
И что более важно (как указано в комментариях), чем увеличение скорости, оно также делает намного более понятным, для чего вы используете каждый бит, поэтому код легче читать.