按位操作符:按位与 & 、按位或 | 、按位异或 ^ 、按位取反 ~

简介: 所有的按位操作符都是按二进制位补码操作

一、说明


所有的按位操作符都是按二进制位补码操作


二、按位与 &


有0则为0,全1才是1


例如 3&-5


3的补码:  0000 0000 0000 0000 0000 0000 0000 0011


-5的补码: 1111  1111 1111  1111  1111 1111  1111  1011


3&-5:0000 0000 0000 0000 0000 0000 0000 0011


转换为原码:0000 0000 0000 0000 0000 0000 0000 0011


结果:3


int main()
{
    printf("%d", 3 & -5);
    return 0;
}

三、按位或 |


全0才是0,有1则为1


例如 3 | -5


3的补码:  0000 0000 0000 0000 0000 0000 0000 0011


-5的补码: 1111  1111 1111  1111  1111 1111  1111  1011


3&-5:1111  1111 1111  1111  1111 1111  1111 1011


转换为原码:1000 0000 0000 0000 0000 0000 0000 0101


结果:-5

int main()
{
    printf("%d", 3 | -5);
    return 0;
}

四、按位异或 ^


相同为0,相异为1


例如 3 ^ -5


3的补码:  0000 0000 0000 0000 0000 0000 0000 0011


-5的补码: 1111  1111 1111  1111  1111 1111  1111  1011


3&-5:1111  1111 1111  1111  1111 1111  1111 1000


转换为原码:1000 0000 0000 0000 0000 0000 0000 1000


结果:-8

int main()
{
    printf("%d", 3 ^ -5);
    return 0;
}

五、按位取反 ~


二进制位补码全部取反,包括符号位


例如 ~3


3的补码:  0000 0000 0000 0000 0000 0000 0000 0011


~3:1111  1111 1111  1111  1111 1111  1111 1100


转换为原码:1000 0000 0000 0000 0000 0000 0000 0100


结果:-4

int main()
{
    printf("%d", ~3);
    return 0;
}

六、按位与 & 的实用技巧

任何数字的按位与 1 都可以得到其二进制位原码的最低位

原理:

1的二进制位补码为 0000 0000 0000 0000 0000 0000 0000 0001

数字n的补码最低位和原码最低位是相同的,所以按位与之后得到的补码前31位都是0,最后一位如果是0得到0,如果是1得到1。补码转原码最低位不变,因此可以得到数字n原码的最低位。

目录
相关文章
|
机器学习/深度学习 计算机视觉
【Tied-Augment】卷出新花样:加强数据增强的有效性!从一篇顶刊论文中窥探的一些信息,
【Tied-Augment】卷出新花样:加强数据增强的有效性!从一篇顶刊论文中窥探的一些信息,
284 0
【Tied-Augment】卷出新花样:加强数据增强的有效性!从一篇顶刊论文中窥探的一些信息,
A-B罗克韦尔 MPL-B540K-SJ22AA 优质永磁旋转伺服电机
A-B罗克韦尔 MPL-B540K-SJ22AA 优质永磁旋转伺服电机
A-B罗克韦尔 MPL-B540K-SJ22AA 优质永磁旋转伺服电机
使用postman测试接口时需要先登录怎么办
使用postman测试接口时需要先登录怎么办
3752 0
使用postman测试接口时需要先登录怎么办
|
人工智能 小程序 搜索推荐
成功案例分享|使用AI运动识别插件+微搭,快速搭建AI美体运动小程序
今天给大家分享一个最近使用我们的“AI运动识别小程序插件”+“微搭”搭建小程序的经典案例。
成功案例分享|使用AI运动识别插件+微搭,快速搭建AI美体运动小程序
|
传感器 存储 编解码
基于STM32的智能手环wifi连接手机APP(上)
基于STM32的智能手环wifi连接手机APP(上)
512 0
|
人工智能 自然语言处理 算法
瓴羊Quick Service智能客服算法通过国家网信办深度合成服务算法备案
瓴羊Quick Service智能客服算法通过国家网信办深度合成服务算法备案
315 2
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
166 0
|
运维 数据挖掘 Serverless
深度解析阿里云EMR Serverless StarRocks在OLAP数据分析中的应用场景
阿里云EMR Serverless StarRocks作为一款高性能、全场景覆盖、全托管免运维的OLAP分析引擎,在企业数据分析领域展现出了强大的竞争力和广泛的应用前景。通过其卓越的技术特点、丰富的应用场景以及完善的生态体系支持,EMR Serverless StarRocks正逐步成为企业数字化转型和智能化升级的重要推手。未来随着技术的不断进步和应用场景的不断拓展我们有理由相信EMR Serverless StarRocks将在更多领域发挥重要作用为企业创造更大的价值。
|
SQL 存储 关系型数据库
Mycat 实现分库分表及读写分离
Mycat 实现分库分表及读写分离
221 0