我一直在研究rotate
算法,并且遇到了一个公式来规范负转数:n - (~r % n) - 1
。
我一直想知道这与n - (abs(r) % n)
甚至n - (-r % n)
有何不同。 NOT
做基本abs
没有的特殊事情吗?还是只是为了表现?
答案 0 :(得分:3)
假设r == n
。或者,通常,r % n == 0
由于-r % n
为0,n - (-r%n)
为n
。
但是,~r
为-r - 1
,因此-r % n
为n - 1
,n - (~r%n) - 1
为0
。
对于任何其他r
,这两个表达式具有相同的值。
n - (-r % n)
的范围是[1...n]
,而n - (~r % n) - 1
的范围是所需的[0...n-1]
。