JAVA中的位运算符
以0开头的整数为八进制
-
05 就是十进制的5
-
011就是十进制的9
-
0xF 就是十进制的15
-
0x11就是十进制的17
int a = 05;
int b = 011;
int c = 0xF;
int d = 0x11;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
按位运算符
二进制的位 ,运算的过程当中一位一位开始运算 ,相当于为二进制定制的运算
-
按位并(AND) : & (都是1结果为1 ,都是0结果为0 ,和逻辑的&类似 如果全1 和 全0结果为全0)
-
按位或 (OR) : | (只要有一个是1结果就为1)
-
按位异或 (XOR) : ^ (两个不一样就为1 ,两个一样对比结果就为0)
-
按位取反:~ (每一位都取反)
用十六进制或者八进制去表示的话 ,能够比较容易的表示出结果
int a = 0xF8;
//1111 1000
int b = 0xF4;
//1111 0100
int c = 0xFF;
//1111 1111
System.out.println(a & b);
System.out.println(a | b);
System.out.println(a ^ b);
System.out.println(~c);
位移运算符
-
' >>> ' : 符号位一起右移,左边补0,又称无符号右移
-
' < ' : 左移,右边补0。左移没有带符号位一说,因为符号位在最左侧
1. 按位运算符不会改变原本的变量的值 2. 位移运算符不会改变原本的变量的值
位运算符的用处
按位运算符
-
掩码(MASK)
一个int有32位 ,即可以使用31位状态表示 ,因此我们可以使用掩码来表示一个人的多种状态 ,但是不建议这样是使用
int base = 1;
int is_student_mask = base;
int is_programmer_mask = base << 1;
int is_driver_mask = base << 2;
int is_painter_mask = base << 3;
int data = 5;
boolean isStudent = (data & is_student_mask) != 0;
System.out.println(isStudent);
boolean isProgrammer = (data & is_programmer_mask) != 0;
System.out.println(isProgrammer);
boolean isDriver = (data & is_driver_mask) != 0;
System.out.println(isDriver);
boolean isPainter = (data & is_painter_mask) != 0;
System.out.println(isPainter);
位移运算符
-
可用于高效除以2
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?