位运算

(n >> k)& 1 取出整数n在二进制表示下的第k位
n & ((1 << k)-1) 取出整数n在后k位二进制所代表的值

int main()
{
    int n = 31;
    cout<<(n & ((1 << 3) - 1))<<endl;    
    return 0;
//输出7 二进制表示 1 1 1 1 1取出后三位 0 0 1 1 1 == 7**
}
int main()
{
    int n = 31;
    cout<<(n & ((1 << 4) - 1))<<endl;    
    return 0;
//输出7 二进制表示 1 1 1 1 1取出后三位 0 1 1 1 1 == 15
}

n ^ (1 << k)将二进制的第k位取反

int main()
{
    int n = 31;
    cout<<(n^(1<<3))<<endl;    
    return 0;
//输出的是23 二进制表示:1 0 1 1 1 
}
int main()
{
    int n = 31;
    cout<<(n^(1<<4))<<endl;    
    return 0;
//输出的是15 二进制表示 0 1 1 1 1
}

n | (1 << k) 将n二进制的第k位赋值为1
n & (~(1 << k)) 将n二进制的第k位赋值为0

成对变换

int main()
{
    //如果n为偶数
    n ^= 1 == n+1;
    //如果n为奇数
    n ^= 1 == n;
    return 0;
}

lowbit运算

int main()
{
    cout<<(n & (~n))<<endl;//取出最低位的1

    for(int i = 31 ;i >= 0;i --)//取出最高位的1
    {
        if((n >> i) & 1)
            {
                cout<<i+1<<endl;
                break;
            } 
    }
}
全部评论

相关推荐

07-03 16:02
门头沟学院 Java
今天面试,非常紧张,面试官问我springboot有哪些核心模块都答不上来了,真的对自己无语了!
程序员小白条:28届我勒个去,很多人面试都没机会
查看1道真题和解析
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务