当r <1时,(n - (~r%n)-1)和(n - (abs(r)%n))之间是否存在差异? 0?

时间:2016-02-04 02:31:43

标签: math c

我一直在研究rotate算法,并且遇到了一个公式来规范负转数:n - (~r % n) - 1

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

1 个答案:

答案 0 :(得分:3)

假设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]