Есть ли альтернатива использованию % (модуля) в C/C++?

Если вы вычисляете число cxx по модулю некоторой степени embedded двойки, вы можете использовать c++ побитовый оператор и. Просто cpp вычтите единицу из второго embedded-control числа. Например:

x % 8 == x & 7
x % 256 == x & 255

Несколько embedded-control предостережений:

  1. Это работает только если второе число является степенью двойки.
  2. Это эквивалентно только в том случае, если модуль всегда положителен. Стандарты C и C++ не определяют знак модуля, когда первое число отрицательное (пока C++11, который делает гарантирует, что он будет отрицательным, что уже делало большинство компиляторов). Побитовый и избавляется от знакового бита, поэтому он всегда будет положительным (т. Е. Это истинный модуль, а не остаток). Хотя, похоже, это то, чего вы хотите.
  3. Ваш компилятор, вероятно, уже делает это, когда может, поэтому в большинстве случаев не стоит делать это вручную.

c++

c

modulo

embedded

2022-09-29T10:10:38+00:00
Вопросы с похожей тематикой, как у вопроса:

Есть ли альтернатива использованию % (модуля) в C/C++?