算法|基础算法|位运算

基础算法|位运算

1.与运算
2.或运算
3.非运算
4.异或运算
5.左移、右移运算

心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。
在这里插入图片描述

与运算

与运算(&):全1才为1

实践代码:

void solve(){
    /*
     * 7   -> 0111
     * 8   -> 1000
     * 7&8 -> 0000
     * */
    cout<<(7&8)<<endl;
}

输出
在这里插入图片描述

或运算

或运算(|):有1就为1

实践代码:

void solve(){
    /*
     * 7   -> 0111
     * 8   -> 1000
     * 7|8 -> 1111
     * */
    cout<<(7|8)<<endl;
}

输出

在这里插入图片描述

非运算

非(~):按位取反符合位也取反

实践代码:

void solve(){
    /*
     * 7   -> 0111
     * ~7  -> 1000
     * */
    cout<<(~7)<<endl;
}

输出
在这里插入图片描述

异或运算

异或(^):同01

实践代码:

void solve(){
    /*
     * 7   -> 0111
     * 10  -> 1010
     * 7^10-> 1101
     * */
    cout<<(7^10)<<endl;
}

输出
在这里插入图片描述

左移、右移运算

左移、右移(<</>>):
左移k位:相当于这个数 * 2k
右移k位:相当于这个数 / 2k

实践代码:

void solve(){
    /*
     * 1    -> 00001
     * 1<<4 -> 10000
     * 16>>4-> 00001*/
    cout<<(1<<4)<<endl;
    cout<<(16>>4)<<endl;
}

输出
在这里插入图片描述
补充:

如果想要判断二进制数中某一位上是1还是0,可以>>和&结合,如a=10000001(二进制数),现在我们要求它第3位上是什么,那么我们就可以用 a>>3&1来实现

模板:
求n的第k位数字n>>k&1
返回n的最后一位1lowbit(n) = n & -n

心有猛虎,细嗅蔷薇。再见了朋友~

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值