位運算加速技巧【持續更新】
在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