首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一个奇怪的结果?如何解释这段代码

2011-12-14 
一个奇怪的结果?怎么解释这段代码 intx1984inty2001x^y^x^ySystem.out.println( x+x+y+y)

一个奇怪的结果?怎么解释这段代码

int   x   =   1984;
int   y   =   2001;
x   ^=   y   ^=   x   ^=   y;
System.out.println( "x   =   "   +   x   +   ";   y   =   "   +   y);

[解决办法]
x ^= y ^= x ^= y;--> x = x ^ (y = y ^ (x = x ^ y));
//--------------------
^是异或地意思,一一比对二进制位,不同为1,否则为0

[解决办法]
楼上正点。。
[解决办法]
Code:
0: sipush 1984
3: istore_1
4: sipush 2001
7: istore_2
8: iload_1
9: iload_2
10: iload_1
11: iload_2
12: ixor
13: dup
14: istore_1
15: ixor
16: dup
17: istore_2
18: ixor
19: istore_1
[解决办法]
x ^= y ^= x ^= y;
逻辑或,非0即1
[解决办法]
逻辑或,非0即1
=================
非0即1?那是肯定的了
=========================
学习学习
[解决办法]
看了一下,应该是2楼说得异或.相同的都为0
0^0 = 0
0^1 = 1
1^1 = 0
1^0 = 1
[解决办法]
输出的结果是x=0,y=1984 ,想不通?

[解决办法]
int x = 1984;
int y = 2001;
x ^= y ^= x ^= y;
System.out.println( "x = " + x + "; y = " + y);
------------------------------------
a=x^y;
b=y^a;
c=a^b;
代入:
y=y^x^y=x;
x=x^y^y^x^y=y;
------------------------------------
结论:互换x,y;

[解决办法]
#include <stdio.h>
main()
{
int x = 255;
int y = 0;
x^=y^=x^=y;
printf( "x=%d,y=%d\n ",x,y);
}
-------------
测度正确。
[解决办法]
这种代码没有一丝一毫的好处,可读性极差,有什么意义呢???走火入魔了。。。

热点排行