Java 位运算(移位、位与、或、异或、非)与逻辑运算

java 位运算包括:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。

逻辑运算符&、&&、|、||:

一、逻辑&与短路&&的区别

  • 总的来说区别是体现在,只有这两个运算符的左边为false的时候会有区别,看如下代码

1.逻辑&的运算

boolean a = true;
boolean b = false;
int i = 10;
if(b&(i++)>0)
    System.out.print(i);   //输出11,即&的右边有进行运算
else
    System.out.print(i);

2.短路&&的运算

boolean a = true;
boolean b = false;
int i = 10;
if(b&&(i1++)>0)
    System.out.print(i);   //输出10,即&&的右边没有运算
else
    System.out.print(i);

小结一下: 
&:不管&的左边是true还是false,右边都会进行运算 
&&: 只要左边是false,右边就不会进行运算 
一半情况下都会选择&&,因为这样可以提高效率,也可以进行异常处理,当右边产生异常的时候,同样可以跳过。

二、逻辑| 与短路||的区别

  • 和上面的类似,只不过这两者是只有当左边为true的时候,才会有区别,看如下代码

1.逻辑 | 的的运算

boolean a = true;
int i = 10;
if(a|(i++)>0)
    System.out.print(i);   //输出11,即的右边有进行运算
else
    System.out.print(i);

2.短路 || 的运算

boolean a = true;
int i = 10;
if(a||(i++)>0)
    System.out.print(i);   //输出10,即||的右边没有运算
else
    System.out.print(i);

小结: 
| : 当左边为true时,右边同样进行运算 
|| : 当左边为true时,右边不再进行运算

时间: 2025-01-06 23:23:05

Java 位运算(移位、位与、或、异或、非)与逻辑运算的相关文章

Java 位运算(移位、位与、或、异或、非)

public class Test {     public static void main(String[] args) {         // 1.左移( << )         // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0://         // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20         System.out.println(5 <

Java 位运算(移位、位与、或、异或、非)(转)

public class Test { public static void main(String[] args) { // 1.左移( << ) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:// // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20 System.out.println(5 << 2);// 运行结果是20 // 2.右移( >>

(转)java位运算

转自:http://aijuans.iteye.com/blog/1850655 Java 位运算(移位.位与.或.异或.非) public class Test { public static void main(String[] args) { // 1.左移( << ) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:// // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为

Java 位运算

一,Java 位运算 1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (l)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1. 2.位运算符 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算.位运算符可以分为逻辑运算符(包括~.&.|和^)及移位运算符(包括>>.<<和>>>). 1)左

Java位运算基础知识

在学习Java运算时,补充学习Java位运算. Java位运算 位运算都是针对整数的补码进行位运算. & 按位与运算 先将整数转换为补码 ,然后执行按位与运算,最后将结果返回为十进制,它有如下几个规律: (1)正数&其他数=正数 考虑最高位为0,按位与都为0 (2)偶数&其他数=偶数 考虑最低位为0,按位与都为0 (3)0&其他数=0 按位与后位数全是0 (4)1&奇数=1,1&偶数=0 通过它可以快速判断一个数是奇数还是偶数 | 按位或运算 先将整数转换为

Java位运算原理及使用讲解

前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值为1还是0,如果是1,设置为0,否则设置为0.但是使用位运算,不用判断原始值,直接改变值就可以: 1^num//num为原始值 当然,一条语句可能对代码没什么影响,但是在高重复,大数据量的情况下将会节省很多开销. 以下是自己整理的关于java位运算的部分内容,如有错误,还请指出,以共同进步,先行致谢

Java 位运算超全面总结

1.原码.反码.补码 关于原码.反码.补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动简洁的解释:对原码.反码.补码最通俗易懂,生动简洁的解释,墙裂建议大家先看完这篇科普文章.在继续讨论之前你要先明白一点:整数在计算机内部都是以补码形式存储的. 2.Java 位运算概览 OK 都看到这儿了那我就假定你已经掌握了原码.反码.补码相关知识(虽然上面那段几乎啥也没讲,纯凑字数) 不废话了.

Java千问:Java位运算经典应用(一)

很多人认为位运算在实际开发过程中并没什么用,学习位运算也只是为了应付面试.这种想法是错误的,接下来我们就通过几篇连载文章介绍一下位运算在实际开发过程中的几个经典应用实例.如果对位运算规则掌握还不是很熟练,可以先阅读<Java千问:Java语言位运算符详解>.这篇文章不仅详细讲解了Java位运算的基本规则和一些常用的运算定律,同时还在文中提到了一些常用的位运算实际应用,比如可以用位运算操作的方式快速把某个变量所在的内存单元清零,或者位运算的方式实现某个变量快速倍增等等.但文中所这提到的这几个实际

java位运算应用

位移动运算符: <<表示左移, 左移一位表示原来的值乘2. 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零.则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12. 同理,>>表示右移. 右移一位表示除2. 位运算: