对于CompSci类,我们复习了Java Math类。作为一个愚蠢的程序员,我尝试使用^运算符而不是Math.pow函数。令人惊讶,令人惊讶的是,它没有起作用。但是,Java吐出了什么,这是我的问题。我正在试图弄清楚正在对这些数字进行的运算。你可以在下面看到我在说什么。
System.out.println(5^1);
System.out.println(5^2);
System.out.println(5^3);
System.out.println(5^4);
System.out.println(5^5);
System.out.println(5^6);
System.out.println(5^7);
System.out.println(5^8);
System.out.println(5^9);运行上面的命令,我得到了以下结果:
4
7
6
1
0
3
2
13
12当我在Python语言中做同样的事情(print 5^1,等等)时,同样的事情也会发生。Java API文档说^是“逐位异或”,但这仍然不能帮助have从5和3中得到6。有人能解释一下为什么会发生这种情况吗?
发布于 2012-10-26 01:27:46
这是一个按位操作,因此它对数字的二进制位进行操作。6是二进制形式的110。5是二进制形式的101。
110
101
=== (^ xor)
011011在二进制中是3。
发布于 2012-10-26 01:30:57
好的,让我们来看第一个例子。最简单的一个。以5^1为例。
5可以用101这样的二进制表示,而1可以用这样的001表示。
101 XOR
001
---
100 = 4 (in decimal)因为1 XOR 1 = 0,0 XOR 0 = 0和1 XOR 0 = 1。只需去查看异或上的wiki页面。
发布于 2012-10-26 01:28:47
这是XOR operation。
5 = 101 in binary
3 = 011 in binary
101
XOR 011
= 110 = 6 in decimalhttps://stackoverflow.com/questions/13073957
复制相似问题