Я всегда предполагал, что при выполнении (a % 256) оптимизатор, естественно, будет использовать эффективную побитовую операцию, как если бы я написал (a & 0xFF).
При тестировании в компиляторе gcc-6.2 (-O3):
// Type your code here, or load an example.
int mod(int num) {
    return num % 256;
}
mod(int):
    mov     edx, edi
    sar     edx, 31
    shr     edx, 24
    lea     eax, [rdi+rdx]
    movzx   eax, al
    sub     eax, edx
    ret
И при попытке другого кода:
// Type your code here, or load an example.
int mod(int num) {
    return num & 0xFF;
}
mod(int):
    movzx   eax, dil
    ret
Похоже, я полностью что-то пропустил. Любые идеи?
