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。
复制代码

 

posted @   无名之辈的ggb  阅读(233)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示