Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1405057
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2253
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-11 22:27
个人简介

--

文章分类

全部博文(241)

文章存档

2021年(3)

2019年(6)

2018年(1)

2017年(9)

2016年(21)

2015年(50)

2014年(125)

2013年(26)

我的朋友

分类: C/C++

2013-12-25 20:19:30

转载: http://blog.csdn.net/ojshilu/article/details/17167083

一般来讲,位运算的速度比加减乘除运算符、分支语句等的速度要快,并且能够达到并行计算。学几个位运算的技巧,在不滥用的前提下对于优化程序速度是好处的。


乘以或除以2的幂数

可以用左移<<和右移>>位运算来代替

i << 2, i >> 2


判断一个数的奇偶性

可以用判断二进制最右的一位来代替,最右位是1则是偶数,是0则是奇数。

i & 1


判断一个数是否是2的幂数

x & (x – 1)


将一个数对应的二进制位的最右边的1置为0

x & (x – 1)


将一个数对应的二进制位的最右边的0置为1

x | (x + 1)


将一个数对应的二进制位的最右边的0置为1,其余位全置为0

?x & (x + 1)


将一个数对应的二进制位的最右边的1置为0,其余位全置为1

?x | (x – 1)


将一个数对应的二进制位的右尾端连续的1都置为0

x & (x + 1)


将一个数对应的二进制位的右尾端连续的1都置为0,其余位全置为1

?x | (x + 1)


将一个数对应的二进制位的右尾端连续的0都置为1

x | (x– 1)


将一个数对应的二进制位的右尾端连续的0都置为1,其余位全置为0

? x & (x - 1)


将一个数对应的二进制位仅保留最右边的1,其余为全置为0

x & (?x)

阅读(1411) | 评论(0) | 转发(0) |
0

上一篇:大数据相关知识

下一篇:链表操作

给主人留下些什么吧!~~