一般的逻辑与、或和异或操作大家都比较熟悉,应用也比较多。
作者在这里提到的利用逻辑与创建模-n计数器的用法,还是比较新颖的。看到这里,才发现前面做了那么多铺垫,终于看到了编程卓越之道的入门。(模-n计数器就是从零开始计数,到某个最大值之后复位归零。)
下面简单的描述一下几种方法:
1、 将计数器累加,再将结果除以n,使用余数作为最终结果;
cntr = ( cntr + 1 ) % n;
2、 利用比较操作来实现;
cntr = cntr + 1;
if ( cntr >= n )
cntr = 0;
3、 利用与数n = 2m – 1进行逻辑与运算,假如n = 32,0x1f = 32 – 1;
cntr = ( cntr + 1 ) & 0x1f;
孰优孰劣,可见分晓,逻辑与所做的运算指令是最少的,这就是高效率的编程。