閱讀402 返回首頁    go 阿裏雲 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升級公告