通常的做法是将计数器加1,再将结果除以n(n为最大值),余数为结果。这种计数器用途很广,如循环队列。
counter = (counter + 1)%n;
相比来讲,使用比较的方法来实现的话效率会更高:
counter = counter + 1;
if( counter >= n )
{
counter = 0;
}
而大多数情况下,与运算的方法显得更加高效,缺点就是最大值不能随意取:
即计数器加1,再与数n=2m - 1(0至m-1位都是1,其他位都是0)
n = 0x3f = 25 - 1 = 31,即 n = 00011111,n为最大值,且是2的倍数减1的数:
counter = (counter + 1) & 0x3f;