如何稳重的耍帅
唉,同学,别走啊,看你年纪轻轻的就有一身横练的筋骨,简直百年一见的编程奇才啊,这本《位运算秘籍》是无价之宝。我看你点了进来,就是有缘,那就此赠与你。
Part 1
见龙在田
其实所有语言里面都有位运算,&,|,^,~,<>,>>>,但是大家往往直接一扫而过,很少在自己的程序中运用它,首先大家要了解这些运算符代表了什么逻辑。
1. &-'与'
2. |-'或'
3. ^-'异或'
4. ~-'非'
5. << - '向左移位'
6. >> - '向右移位'
森么,你听不懂上面的术语,emm欢迎百度布尔代数,大概也就5分钟的学习曲线吧。
Part 2
见龙在天
森么,你不高兴百度,那也木有关系啦。记住下面的一些奇技淫巧也是一样的。
thinking makes talents, practice makes perfect
1.判断奇偶数
常用写法:(a%2 !=0 )
位运算:if(a&1){奇数}
原理:任何偶数二进制右起第一位数必定0,而奇数必定是1,而1的二进制就是1,所以可以用这个判断。
2.交换变量
常用写法: swap函数
位运算: a ^=b, b^=a, a^=b
原理:第一步,a = a^b, 第二步,b=b^a,也就是b=b^a^b,也就是b=a^0,此处换值。第三步,a = a^b, 也就是a=a^b^a,也就是b
逆天写法:a = [a=b, b][0]
3.向下取整
常用写法:Math.floor()
位运算: x|0
4.乘以2的n次方
常用写法:Math.power()
位运算: x << n
Part 3
亢龙有悔——学长的小课堂
学弟:学长,怪不得你写的代码奇奇怪怪的,我都看不懂。
学长:啊,其实初学者在代码中位运算尽量配合注释使用哦,不然一周之后可能连自己的代码都看不懂ORZ
学弟:那位运算除了耍帅外还有别的作用吗?
学长:其实位运算是和汇编指令一一对应的,执行速度一般会比其他的写法要快很多,在追求性能的时候很有用!
编辑:宋钰清