Java中的位级操作
我试图在Java中进行一些位操作,以应用掩码、表示集等。 原因: 在应为“3”时打印“0”: 我怎样才能得到那种行为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应为
提前感谢使用二进制“或”运算符:
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