java位运算
位运算
位运算是在二进制中的运算方式,所有其他进制的数在进行位运算时,都要先转化成二进制数再进行运算。
位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反( ~ ).
&运算(与运算)
&运算(与运算):两个二进制操作数对应位同为1 结果位 才为1,其余情况为0;
&运算(与运算)中1&1=1,1&0=0,0&0=0
比如,8 & 7 的运算步骤如下:
8的二进制是1000,7的二进制是0111
1000
0111
结果:
0000
把8的每一位都跟7的每一位进行运算,最高位 1&0=0, 后面的第二位是 0&1=0,依此类推。结果为 0000.
所以可以得出0000,故输出的是0。
public static void andDemo() {
int result = 8 & 7;
System.out.println(result);
}
x & 1
1是0001,其他数跟 1做与运算,都只看最后一位即可,其他的都是0。
8&1,就是二进制1000和0001的与运算,结果得到 0000
7&1,就是二进制0111和0001的与运算,结果得到 0001。
某一个数x, x & 1 可以得到 x 除以 2 的余数。
x & 1 可以来判断奇偶数。
x & (2^m-1)
位运算 x & (2^m-1) ,实际相当于 x % (2^m).
|运算 (或运算)
|运算 (或运算):两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0;
|运算 (或运算). 1|1=1,1|0=1,0|0=0
8 | 7 的运算步骤如下:
0111
1000
结果:
1111
1111转化为十进制是15,也就是说 8 | 7 = 15.
public static void orDemo() {
int result = 8 | 7;
System.out.println(result);
}
~(取反)
~a:二进制操作数 0的为1,1的为0
public static void reverseDemo() {
int result = ~5;
System.out.println(result);
}
a ^ b(异或)
a ^ b(异或):两个二进制操作数对应位,相同为0,相异为1
public static void xorDemo() {
int result = 5 ^ 10;
System.out.println(result);
}
<< (左移)
在十进制中,比如1向左移,得到10。左移一位是乘以10。
而在二进制中,左移一位,相当于乘以2。
public static void leftDemo() {
int result = 7 << 1;
System.out.println(result);
}
>> (右移)
右移一位,相当于除以2。
public static void rightDemo() {
int result = 8 >> 1;
System.out.println(result);
}
参考资料:
https://blog.csdn.net/weixin_45124488/article/details/114398536
https://blog.csdn.net/m0_48283915/article/details/108157476
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-06-06 ElasticSearch---查询es集群状态、分片、索引
2016-06-06 Android笔记:ContextMenu