网站首页 > java教程 正文
Java中的位运算符用于对二进制位进行操作。这些运算符直接对整数在内存中的二进制表示进行操作。位运算符在处理位级操作,如硬件控制、加密、优化数据存储等场景中非常有用。
以下是Java中的位运算符及其作用:
- &(按位与): 如果相对应位都为1,则结果为1,否则为0。
int a = 60; // 60 = 0011 1100
int b = 13; // 13 = 0000 1101
int c = a & b; // 12 = 0000 1100
System.out.println(c); // 输出:12
- |(按位或): 如果相对应位都为0,则结果为0,否则为1。
int a = 60; // 60 = 0011 1100
int b = 13; // 13 = 0000 1101
int c = a | b; // 61 = 0011 1101
System.out.println(c); // 输出:61
- ^(按位异或): 如果相对应位值相同则结果为0,否则为1。
int a = 60; // 60 = 0011 1100
int b = 13; // 13 = 0000 1101
int c = a ^ b; // 49 = 0011 0001
System.out.println(c); // 输出:49
- ~(按位非): 对每个位取反,即把1变为0,把0变为1。
int a = 60; // 60 = 0011 1100
int c = ~a; // -61 = 1100 0011 (二进制补码表示)
System.out.println(c); // 输出:-61
- <<(左移): 把<<左边的一个运算数的各二进制位全部左移若干位(<<右边的数)。
int a = 60; // 60 = 0011 1100
int c = a << 2; // 240 = 1111 0000
System.out.println(c); // 输出:240
- >>(右移): 把>>左边的一个运算数的各二进制位全部右移若干位(>>右边的数)。
int a = 60; // 60 = 0011 1100
int c = a >> 2; // 15 = 0000 1111
System.out.println(c); // 输出:15
- >>>(无符号右移): 把>>>左边的一个运算数的各二进制位全部无符号右移若干位(>>>右边的数)。
注意:无符号右移与右移的区别在于,无符号右移会将最高位填充为0,而右移会将最高位填充为符号位。
请注意,在使用这些位运算符时要确保你的操作不会溢出或产生意外的结果。
猜你喜欢
- 2024-10-18 Java 中的移位运算符(Shift Operator)
- 2024-10-18 「每日分享」把Map中的hash()分析的最透彻的文章
- 2024-10-18 从bitmap到布隆过滤器,再到高并发缓存设计策略
- 2024-10-18 Java基础入门(运算符)(java运算符的含义)
- 2024-10-18 Day03-Java运算(三年级混合运算练习题)
- 2024-10-18 浅谈java中的数学运算(java的数学公式有哪些)
- 2024-10-18 好程序员Java学习路线分享Java中的位移运算
- 2024-10-18 全网分析Map中hash方法最透彻的一篇文章
- 2024-10-18 为什么Java String哈希乘数为31?(java中string是什么数据类型)
- 2024-10-18 Java精确运算高位数数字(java计算精度问题)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)