В программировании часто необходимо проверить, является ли число четным или нечетным. Для этого мы обычно используем:
Однако я понимаю, что оператор «%» фактически выполняет деление и возвращает его остаток; поэтому в приведенном выше случае было бы быстрее просто проверить последний бит. Допустим, n = 5;
Чтобы проверить, является ли число четным или нечетным, нам просто нужно проверить последний бит. Если это 1, число нечетное; в противном случае оно четно. В программировании это выражалось бы так:
Насколько я понимаю, это будет быстрее, чем % 2, поскольку деление не выполняется. Необходимо простое сравнение.
Тогда у меня 2 вопроса:
1) Действительно ли второй путь быстрее, чем первый (во всех случаях)?
2) Если ответ на вопрос 1 — да, достаточно ли умны компиляторы (на всех языках), чтобы преобразовать % 2 в простое сравнение битов? Или нам нужно явно использовать второй способ, если мы хотим добиться максимальной производительности?
Подробнее здесь:
https://stackoverflow.com/questions/320 ... lly-faster