Java中的逻辑符号
绝对基本的Java问题,我在Google上很难找到。以下是什么意思:Java中的逻辑符号,java,operators,bitwise-operators,notation,Java,Operators,Bitwise Operators,Notation,绝对基本的Java问题,我在Google上很难找到。以下是什么意思: (7 & 8) == 0? 这是否等同于写: 7 == 0 || 8 == 0? 我写了一个快速的主要测试,似乎是这样的。我只是想确保我没有遗漏任何东西。没有&为。如果在两个输入中都设置了相应的位,则设置一个位。因为在二进制中,7是111,8是1000,它们没有共同的位,所以结果是0 你所建议的东西实际上没有任何速记语法,一行也没有。有一些解决方法——测试集合或位集合中的成员身份,使用开关语句——但没有什么比7==
(7 & 8) == 0?
这是否等同于写:
7 == 0 || 8 == 0?
我写了一个快速的主要测试,似乎是这样的。我只是想确保我没有遗漏任何东西。没有<代码>&为。如果在两个输入中都设置了相应的位,则设置一个位。因为在二进制中,7是111
,8是1000
,它们没有共同的位,所以结果是0
你所建议的东西实际上没有任何速记语法,一行也没有。有一些解决方法——测试
集合
或位集合
中的成员身份,使用开关
语句——但没有什么比7==0 | 8==0
更有效、更简短的方法了。这是位比较,工作正常,因为与7和8进行比较,在其他情况下不能保证。如果整数中的两个位都匹配,则得到的结果将是“1”而不是“0”。该&
是位与运算符。这意味着您正在对表示8和7的位进行and运算:
7
->0111
8
->1000
这显然会导致0
这在解释其他逐位运算符的同时,也很好地解释了您的确切示例。
&
是逐位和。给定两个输入位,以下按位和给出位输出:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
在这种情况下,
7 in binary is 00000111
8 in binary is 00001000
--------
00000000, which is 0 in decimal.
假设你有26个而不是8个
7 in binary is 00000111
26 in binary is 00011010
--------
00000010, which is 2 in decimal.
按位操作用于提取和操作压缩为数字的字段
例如,假设将3个字段压缩成一个数字,每个数字有两个4位(0..15),一个和3位(0..7)
//n=aaaabbccc
//解压缩字段:
a=(n>>7)&0xF;
b=(n>>3)和0xF;
c=(n>>0)和0x7;
//打包字段:
如前所述,n=(a&是位比较,但也可以用作短路“and”。例如:
if((x == 3) && (y = 3/0)){
将一直抛出错误。但是
if((x == 3) & (y = 3/0)){
只有当x等于3时才会抛出错误。如果x不等于3,java不会费心计算其余的表达式,因为False&任何东西都是False
if((x == 3) & (y = 3/0)){