math - 当 r < 0 时,(n - (~r % n) - 1) 和 (n - (abs(r) % n)) 之间有区别吗?

标签 math c

我一直在研究 rotate 算法,并发现了一个公式来归一化负数的旋转:n - (~r % n) - 1

我一直想知道这与 n - (abs(r) % n) 甚至 n - (-r % n) 有何不同。 NOT 是否有基本 abs 没有的特殊功能?还是只是为了表现?

最佳答案

假设 r == n。或者,一般来说,r % n == 0

由于 -r % n 为 0,n - (-r%n)n

但是,~r-r - 1 所以 -r % nn - 1n - (~r%n) - 10

对于任何其他r,这两个表达式具有相同的值。

n - (-r % n) 的范围是 [1...n]n - (~r % n ) - 1 是所需的 [0...n-1]

关于math - 当 r < 0 时,(n - (~r % n) - 1) 和 (n - (abs(r) % n)) 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35197028/

相关文章:

algorithm - 在两组点上寻找平移和比例以获得它们距离的最小二乘误差?

c - 如何使用 iso_c_binding 声明指针指针?

c - 初始化变量导致 printf 停止工作

c - 如何在 C 中用 extern 声明一个指针?

algorithm - 查找具有子区间的区间的最小覆盖范围

java - 为什么这个数学函数在 Java 和 JavaScript 中返回不同的值?

c++ - 并行区域中循环的 OpenMP 迭代

c++ - 如何在windows日文系统中打印日文字符?

c++ - 从平面方程绘制任意平面,OpenGL

java - 浮点除法和预先检查值 if eq 的效率