|位或运算的问题

立志做一个佳娃~ 2012-05-08 07:09:49
看资料经常看到在java中使用|位或运算符结合&来判断使用没有使用某一个flag,比如如下代码:
public static void main(String[] args) {
int j1 = 0x00000010;
int j2 = 0x00000011;
int z1 = 0x00000012;
System.out.println((z1 & j2) == 0x00000010);
}
但在这里有一个问题,打印的值是符合j1的值,这种情况j1和j2就有冲突了,我要请教的问题就是如何对j1和j2进行在赋初值时就避免这种情况呢》?感谢
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rfasm 2013-05-03
  • 打赏
  • 举报
回复
引用 1 楼 jiligululalala 的回复:
"|" "&"是按位运算,按“位”。 把这些数字都转成二进制,每一比特每一比特地进行"|","&"。 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80
j1和j2分别取上面的不同值,怎么可能还冲突, 只要你的z1不是0。如果你的z1是0,而你又进行了&运算,那就没办法了。虽然我也不是很清楚你说的冲突。
孤独小剑 2012-05-09
  • 打赏
  • 举报
回复
z1 & j1) == 0x00000010
z1 & j2) == 0x00000010
所以冲突,建议:
j1 = 0x01
j2 = 0x02
z1 = 0x03
这样就不冲突了吧。
AnYidan 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

这个我清楚啊,楼上

我的问题是这样啊

但在这里有一个问题,打印的值是符合j1的值,这种情况j1和j2就有冲突了,我要请教的问题就是如何对j1和j2进行在赋初值时就避免这种情况呢》?感谢
[/Quote]

有什么冲突,举例说明下
自信男孩 2012-05-08
  • 打赏
  • 举报
回复
没看明白哦,想避免什么,为什么要避免呢?
rfasm 2012-05-08
  • 打赏
  • 举报
回复
我也对LZ说的避免感到困惑。不知道你要避免什么
muyi66 2012-05-08
  • 打赏
  • 举报
回复
避免?从何说起呢?

话说,我如何避免我的岁数减1就是我同事的年龄?
  • 打赏
  • 举报
回复
那如何避免这种情况呢??
muyi66 2012-05-08
  • 打赏
  • 举报
回复
你说的冲突是指什么意思?z1 & j2 的值?它是和j1的值相同,但那只是巧合,没什么必然关系啊?
W170532934 2012-05-08
  • 打赏
  • 举报
回复
奇怪,为什么符合J1的时候还和j2冲突??这里不是用的&操作符么?
  • 打赏
  • 举报
回复
这个我清楚啊,楼上

我的问题是这样啊

但在这里有一个问题,打印的值是符合j1的值,这种情况j1和j2就有冲突了,我要请教的问题就是如何对j1和j2进行在赋初值时就避免这种情况呢》?感谢
jiligululalala 2012-05-08
  • 打赏
  • 举报
回复
"|" "&"是按位运算,按“位”。

把这些数字都转成二进制,每一比特每一比特地进行"|","&"。

0x01
0x02
0x04
0x08
0x10
0x20
0x40
0x80

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧