阅读402 返回首页    go 技术社区[云栖]


位运算加速技巧【持续更新】

在c语言中,有时需要乘以2,除以2,或者要求2^n是多少,这些运算可以自己写函数实现,也可以用一些写好的函数实现

但是最高效的,执行效率最快的,也是最装B的方法还是位运算(计算机本来就是用位来做计算的)。


~取反,0取反是1,1取反是0
<<是左移,比如1<<n,表示1往左移n位,即数值大小2的n次方
>>右移,类似左移,数值大小除以2的n次方
&按位与,因为1的二进制表示是00000001,所以对于二进制最后为1的与出来就为1,为0的就为0,比如 1&10为0,1&9却为1
|按位或,x|y中只要有一个1则结果为1
^按位异或,x^y相等则为0,不等则为1

所有数值必须转换为二进制数才能位运算,每一位数相对应运算


下面上傻瓜都看的懂的例子:

(1)1<<8 == 2^8 == 256  (2的次方)

(2)6<<1 == 12  (直接乘以2)

(3)6>>1 == 3    (直接除以2)

(4)6<<6 == 384 == 6*(2^6)  (乘以2的n次方)

(5)32>>3 == 4 == 32 / 8    (道理同上,除以2的n次方)

最后更新:2017-04-03 05:39:36

  上一篇:go 弱事件管理器及WeakEventManager,IWeakEventListener的使用
  下一篇:go 8月5日SLB升级公告