一、^ 异或
异或:^ 相同为0,不同为1。
1、交换两个数,不用临时变量
(1)普通写法
void main()
{
int i=10;
int j=20;
i=i+j
j=i-j
i=i-j
printf("%d %d\n",i,j);
}
(2)使用异或 ^
void main()
{
int i=10;
int j=20;
i=i^j
j=i^j
i=i^j
printf("%d %d\n",i,j);
}
2、<<左移与>>右移
右移:>> 如果数字是正数的话,在左边补0,如果是负数的话在左边补1。
左移:<< 在最右补0。
(1)利用<< >>统计一个数字二进制下有几个1
int fun(int x)
{
int count = 0;
while (x != 0)
{
if (x % 2 == 1)
{
count ++;
}
//x >>= 1;
x /= 2;
}
return count;
}