. Метод описывается следующим образом:
Модульное сложение: (x + y) % n
Логическая формула:
Код: Выделить всё
z = x + y
r = z - (n & - (z >= n))
Код: Выделить всё
x = 10 # 1010
y = 5 # 0101
z = x + y # 1111
n = 6 # 0110
r = z - (n & -(z>=n)) # 1001
print(r)
(10+5) по модулю 6 будет 3, но вычисление возвращает 9.
И что действительно ли выражение r = z - (n & -(z >= n)) вычисляется, и могу ли я изменить этот подход для правильного вычисления
(𝑥+𝑦)mod 𝑛 ?
Существуют ли какие-либо другие эффективные побитовые методы модульной арифметики, о которых мне следует знать?
Подробнее здесь: https://stackoverflow.com/questions/790 ... -adddition