位运算

//按位与
&
a&b

//按位或
|
a|b

//按位异或 相同为0 相异为1
^
a^b

//按位取反
~
~a

//向左移
<<
a<<2 //左移两位

//向右移
>>
a>>2 //右移两位

常用位运算

1.将a的第n位置1
a |= (1<<n)
2.将a的第n位置0
a &= ~(1<<n)

3.判断a的第n为是否为1
 bool b = a &(1<<n) //if(b>0)则为1 否则为0

4.翻转a的第n位
a ^= (1<<n)

5.计算a的二进制中一共有几个1
int countOf1(int num)
{
    int count = 0;
    unsigned int flag = 1;

    while(flag)
    {
        if(num & flag)
        {
            count++;
        }

        flag = flag << 1;
    }
    return count;
}

results matching ""

    No results matching ""