code for fun

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年5月3日

摘要: unsigned int v; // 判断v是否为2的幂bool f; // f为判断的结果f = (v & (v - 1)) == 0; // 结果为0表示不是2 的幂// 改变表示方法,可以使用下面的方法:f = v && !(v & (v - 1)); 阅读全文
posted @ 2013-05-03 18:28 xueda120 阅读(254) 评论(0) 推荐(0) 编辑

摘要: 不用选择分支找出指定两整数中的最大值与最小值: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, 阅读全文
posted @ 2013-05-03 17:00 xueda120 阅读(332) 评论(0) 推荐(0) 编辑