我正在尝试在Java中进行一些操作来应用蒙版,表示集等。 原因:
int one=1;
int two=2;
int andop=1&2;
System.out.println(andop);
当应为“3”时打印“0”:
0...001
0...010
_______
0...011
我怎么能得到这种行为?
提前致谢
答案 0 :(得分:11)
使用二进制'或'运算符:
int andop = 1 | 2;
二进制'和'运算符将保留两边的位集;在1
和2
的情况下,根本没有位。
答案 1 :(得分:10)
您按位OR和按位AND混合
答案 2 :(得分:5)
你正在寻找一个按位“OR”,而不是“AND”:
int both = one | two;
“或”说:“如果输入 x *中的1为1,则 n 应为1或*输入 y 中的1为1
“AND”说:“如果输入 x *中的1为1,则 n 应为1,输入 y 中为* 1
答案 3 :(得分:2)
&安培;必须是1
0...001
&...&&&
0...010
_______
0...000
回答= 0
|是或者,一个是好的
0...001
|...|||
0...010
_______
0...011
回答= 3
答案 4 :(得分:0)
更好的解决方案是使用枚举 int 值 ONE(1),TWO(2)等,以及EnumSet 。
来自JavaDoc:
枚举集在内部表示为位向量。这个 表示非常紧凑和高效。空间和时间 这个类的性能应该足够好,以允许它作为一个 高质量,类型安全的替代传统的基于int的“bit” 标志强>“。