[1] 总览
以下是可以提高代码逼格,而且比较好记的5个位运算技巧目录:
1、整数n乘以2
2、整数n乘以2的m次方
3、判断数字n的奇偶
4、不用临时变量交换整数n与整数m
5、求两个整数n和m的平均值
[2] 整数n乘以2
只适用于整数(负整数、0、正整数):
int f( int n ) { //计算n*2 return n << 1 ; }
浮点数的移位没有意义,因为它的bits都有特殊含义,移位则直接改变本质了。
[3] 整数n乘以2的m次方
只适用于整数(负整数、0、正整数):
int f( int n, int m ) { //计算n*(2^m) return n << m ; }
[4] 判断整数n的奇偶
只适用于整数(负整数、0、正整数):
boolean f( int n ) { return (n & 1 ) == 1 ; }
返回true是奇数,返回false是偶数。
[5] 不用临时变量交换整数n与整数m
只适用于整数(负整数、0、正整数):
m ^= n ; n ^= m ; m ^= n ;
首先有个原理需要知道:
若a ^ b = c, 则c ^ b = a, c ^ a = b。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。
[6] 求两个整数n和m的平均值
只适用于整数(负整数、0、正整数):
int f( int x, int y ) { return (x +y ) >> 1 ; }