Я минимизирую стоимость расчета модуля в C. скажем, у меня есть число x и n - число, которое будет делить x
когда n == 65536 (что бывает 2 ^ 16):
mod = x% n (11 инструкций по сборке, подготовленных GCC)
или
mod = x и 0xffff, равным mod = x и 65535 (4 инструкции по сборке)
поэтому GCC не оптимизирует его до такой степени.
В моем случае n не является x ^ (int), но является наибольшим простым меньше 2 ^ 16, что составляет 65521
как я показал для n == 2 ^ 16, побитовые операции могут оптимизировать вычисление. Какие битовые операции можно выполнить, когда n == 65521 для вычисления модуля.