java------按位运算
在日常开发中位运算不会很常用到,如果能够巧妙的使用位运算可以大量减少运行开销,优化算法。在java中一共有七种位运算符
1.&:按位与
两个操作数对应位同为1时,结果为1,其余全为0。(或者是只要有一个操作数为0,结果就为0)。
将2个操作数和结果都转换为二进制进行比较: 5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101 3转换为二进制:0000 0000 0000 0000 0000 0000 0000 0011 1按位与运算后:0000 0000 0000 0000 0000 0000 0000 0001 System.out.println(5&3);
2.|:按位或
两个操作数对应位同为0时,结果为0,其余全为1。(或者是只要有一个操作数为1,结果就为1)。
5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101 3转换为二进制:0000 0000 0000 0000 0000 0000 0000 0011 7按位或运算后:0000 0000 0000 0000 0000 0000 0000 0111 System.out.println(5 | 3);//结果为7
3.~:按位非
第n位为1,那么按位非的结果是第n位变为0,反之亦然。
System.out.println(~5);//结果为-6 5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101 -6按位非运算后:1111 1111 1111 1111 1111 1111 1111 1010 补:有朋友对这里-6怎么算的不太理解,我简单解释一下: 5的2进制表示(假设只用4比特表示,最高比特为符号位)是0101,0101按位取反后是1010。1010是补码,取反(符号位不变)加1后就是原码。取反后是1101,加1后是1110(是10进制的-6),所以~5等于-6。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?