402
技术社区[云栖]
位运算加速技巧【持续更新】
在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