第二个输出的为什么是3

kiver149 2008-09-03 07:15:36
public class A {
public static void main(String[] args)
{
boolean a = false ,b =true ,c =false,d =true;
a =b^c^d;
System.out.println(a);
int a1 = 0, b1 =1, c1 =2;
a1 = b1^c1;
System.out.println(a1);
}
}
int a1 = 0, b1 =1, c1 =2;
a1 = b1^c1;
System.out.println(a1);


麻烦大家帮我解释下,谢谢了
...全文
163 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxxzhy 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kiver149 的回复:]
引用 1 楼 OXFORD_216 的回复:
按位异或
1的最低两位是01
2的最低两位是10

能不能详细的解释一下
谢谢了
[/Quote]
^ -----> 异或运算:
理解1: 相同为0(0^0=0 1^1=0),相异为1(1^0=1 0^1=1)
理解2: 遇0则等于本身(0^0=0 1^0=1 ),遇1则翻转(0^1=1 1^1=0)
richard_2010 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hai666wang 的回复:]
1和2的二进制分别为:
0000 0001
0000 0010
进行按位异或操作---------
0000 0011
再换算成十进制为 1+2=3
[/Quote]
hai666wang 2008-09-03
  • 打赏
  • 举报
回复
1和2的二进制分别为:
0000 0001
0000 0010
进行按位异或操作---------
0000 0011
再换算成十进制为 1+2=3
iwillrockyou 2008-09-03
  • 打赏
  • 举报
回复
上面都说得很清楚了,接分
justinavril 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dave080 的回复:]
运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位相同为零,不相同为1。
适用场合:判断数字对应的位是否相同。
示例代码:
int a = 1;
int b = 2;
int c = a ^ b;
计算过程:
4的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0001
10的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0010
按照计算规则结果为 0000 0000 0000 0000…
[/Quote]
搞得这么长干啥 看的我都晕了... 呵呵
dave080 2008-09-03
  • 打赏
  • 举报
回复
sorry

1的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0001
2的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0010
dave080 2008-09-03
  • 打赏
  • 举报
回复
运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位相同为零,不相同为1。
适用场合:判断数字对应的位是否相同。
示例代码:
int a = 1;
int b = 2;
int c = a ^ b;
计算过程:
4的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0001
10的二进制形式为 0000 0000 0000 0000 0000 0000 0000 0010
按照计算规则结果为 0000 0000 0000 0000 0000 0000 0000 0011
这个数字转换为十进制就是数字3
justinavril 2008-09-03
  • 打赏
  • 举报
回复
首先异或的运算表是
0 0 1 1
^ 0 1 0 1
---------
1 0 1 0


所以b1 = 1 = 01 ^ c1 = 2 =10
b1 01
c1 10
^ 11 = 3
nyzlhao 2008-09-03
  • 打赏
  • 举报
回复
按位异或
转成二进制
1的最低两位是01
2的最低两位是10
其他的位都是零
相加得11转换成十进制1*2+1=3
kiver149 2008-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 OXFORD_216 的回复:]
按位异或
1的最低两位是01
2的最低两位是10
[/Quote]
能不能详细的解释一下
谢谢了
OXFORD_216 2008-09-03
  • 打赏
  • 举报
回复
按位异或
1的最低两位是01
2的最低两位是10

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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