Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的位级操作_Java_Bit - Fatal编程技术网

Java中的位级操作

Java中的位级操作,java,bit,Java,Bit,我试图在Java中进行一些位操作,以应用掩码、表示集等。 原因: 在应为“3”时打印“0”: 我怎样才能得到那种行为 提前感谢使用二进制“或”运算符: int andop = 1 | 2; 二进制“and”运算符将保留两侧的位集;在1和2的情况下,这根本不是位。您将按位OR和按位and混在一起,您要查找的是按位“OR”,而不是“and”: “或”表示:“如果输入x*中的位n为1,或*输入y中的位n为1,则位n应为1” “AND”表示:“如果输入x*中的位n为1,*输入y中的位n为1,则位n应为

我试图在Java中进行一些位操作,以应用掩码、表示集等。 原因:

在应为“3”时打印“0”:

我怎样才能得到那种行为


提前感谢

使用二进制“或”运算符:

int andop = 1 | 2;

二进制“and”运算符将保留两侧的位集;在
1
2
的情况下,这根本不是位。

您将按位OR和按位and混在一起,

您要查找的是按位“OR”,而不是“and”:

“或”表示:“如果输入x*中的位n为1,或*输入y中的位n为1,则位n应为1”

“AND”表示:“如果输入x*中的位n为1,*输入y中的位n为1,则位n应为1”

&必须同时为1

0...001
&...&&&
0...010
_______
0...000
答案=0
|是或,一个1就可以了

0...001
|...|||
0...010
_______
0...011
answer=3

更好的解决方案是使用int值为一(1)、二(2)等的枚举

从JavaDoc:

枚举集在内部表示为位向量。这 表示非常紧凑和高效。时空 该类的性能应该足够好,以允许将其用作 高质量、类型安全的替代传统的基于int的“bit” 标志


您知道吗,Java对此有一个特定的类:
int both = one | two;
0...001
&...&&&
0...010
_______
0...000
0...001
|...|||
0...010
_______
0...011