<< 左移运算符,移动一位相当于原来的数值乘以2,如:
3<<2 = 12
>> 右移运算符,移动一位相当于原来的数值除以2,如:
12>>2 = 3
^ 异或运算符,任何数异或自己 = 把自己置零
a%2 等价于 a&1
求两个数的平均值
int average(int x,int y){
return (x&y)+((x^y)>>1);
}
不用temp交换两个整数
void swap(int x,int y){
x^=y;
y^=x;
x^=y;
}
3<<2 = 12
>> 右移运算符,移动一位相当于原来的数值除以2,如:
12>>2 = 3
^ 异或运算符,任何数异或自己 = 把自己置零
a%2 等价于 a&1
求两个数的平均值
int average(int x,int y){
return (x&y)+((x^y)>>1);
}
不用temp交换两个整数
void swap(int x,int y){
x^=y;
y^=x;
x^=y;
}