A couple of notes:
1. I prefer to be explicit when coding (say what you mean, not what you think the compiler should be doing), so I'd use /16 rather than >>4 when I mean math and not bit manipulation. If the compiler is not a toy,
it will use a shift even
without optimizations (but see below). It's also easier to update, should the divisor change.
2. One of the improvement of C99 over C89 is the clear definition of integer division: a / will always round towards 0 (so -15 / 4 == -3) while a shift with a negative first operand is implementation defined. Other languages might differ: (ANSI) FORTH, e.g., rounds towards -ā.
3. Most implementations will perform an arithmetic shift on a signed operand, so the result will be rounded towards -ā (so -15 >> 2 == -4), but the standard does not prevent using a logical shift (same as with an unsigned argument, so -15 >> 2 == 1'073'741'820, with surprising results).
Points 2 and 3 above are a bit moot in this case, as the OP is averaging a frequency - I don't expect it to take a negative value in this context.