JAVA中的位运算符

字面值的八进制和十六进制

以0开头的整数为八进制

  • 05 就是十进制的5

  • 011就是十进制的9

以0x开头的整数位十六进制

  • 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

    左移相当于除二 ,右移相当于乘以二

posted @   comia  阅读(149)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示