摘要:
unsigned int v; // 判断v是否为2的幂bool f; // f为判断的结果f = (v & (v - 1)) == 0; // 结果为0表示不是2 的幂// 改变表示方法,可以使用下面的方法:f = v && !(v & (v - 1)); 阅读全文
摘要:
不用选择分支找出指定两整数中的最大值与最小值:int x; int y; // 找出x与y的最大值与最小值int r; // r保存结果r = y ^ ((x ^ y) & -(x < y)); // min(x, y)在一些很少的机器上,分支比较很耗资源,而且没有条件移动指令存在,以上的实现可能比传统的方法:r = (x < y) ? x : y要快。即使比后者多执行两步指令。(通常,前面的方法要快)它的工作原理如下:如果x<y,那么-(x-y)全部为1, 结果r= y ^ (x ^ y) & ~0 = y ^ x ^ y = x.否则,如果x>=y, 阅读全文