java 运处符 | & 运算过程
- 按位与运算(&):二元运算符。当被运算的两个值都为1时,运算结果为1;否则为0。
- 按位或运算(|):二元运算符。当被运算的两个值都为0时,运算结果为0;否则为1。
- 按位异或运算(^):二元运算符。当被运算的两个值中任意一个为1,另一个为0时,运算结果为1; 否则为0。
- 按位非运算(~):一元运算符。当被运算的值为1时,运算结果为0;当被运算的值为0时,运算结果 为1。 这里不像我们看到的逻辑运算符(与运算&&、或运算||、非运算!)操作的是布尔值true或false,或者是一个 能产生布尔值的表达式;“按位运算符”所指的“位”就是二进制位,因此它操作的是二进制的0和1。 逻辑运算符只能操作布尔值或者一个能产生布尔值的表达式;按位运算符能操作整型值,包括byte、 short、int、long,但是不能操作浮点型值(即float和double),它还可以操作字符型(char)值。 按位运算符不能够操作对象,但是在Java5.0及以上版本中,byte、short、int、long、char所对应的 包装器类是个例外,因为JAVA虚拟机会自动将它们转换为对应的基本类型的数据。 逻辑运算符的运算遵循短路形式,而按位运算符则不是。所谓短路就是一旦能够确定运算的结果,就不 再进行余下的运算。
|是指:按位或 假如左边的是真,那么还得判断右边的,这个和||(逻辑或)有区别,后者只要看到左边是真,那么就是真,也就是所说的短路
&:按位与,假如左边是假,也得判断右边,但是&&不一样,左边假的右边也短路
&运算符
条件1&条件2 条件1,条件2都会执行
这与&&运算符不同
条件1&&条件2 如果条件1为false,那么条件2不会执行
同样的
|运算符
条件1!条件2 条件1,条件2都会执行
这与||运算符不同
条件1||条件2 如果条件1为true,那么条件2不会执行
这两个是位运算符。
把两个数字转换成二进制后逐位进行运算
|是按位或
&是按位与
你按照我的试一下就知道了 ,不懂的继续问我
我刚才说的短路的意思就是不计算。
- 按位与运算(&):二元运算符。当被运算的两个值都为1时,运算结果为1;否则为0。
- 按位或运算(|):二元运算符。当被运算的两个值都为0时,运算结果为0;否则为1。 给你个例子:
| 运算过程如下:
0101 (expression1)
1100 (expression2)
1101 (结果)
& 运算过程如下:
0101 (expression1)
1100 (expression2)
0100 (结果)