首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2^0*2与(2^0)*2的差异?

2^0*2与(2^0)*2的差异?
EN

Stack Overflow用户
提问于 2016-10-01 08:11:22
回答 3查看 234关注 0票数 4

我希望两种表达方式都能给出相同的答案:

代码语言:javascript
运行
复制
System.out.println(2^0*2);
System.out.println((2^0)*2);

输出:

代码语言:javascript
运行
复制
2
4

2^0*2 = 2(2^0)*2 = 4有什么特别的原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-01 08:18:17

你错误地认为^算子的行为和数学中的指数一样。

乍一看,您可以看到^被理解为+运算符。实际上,它意味着按位XOR运算符。

代码语言:javascript
运行
复制
System.out.println(2^0*2);   //  2 XOR 0  * 2 = 2
System.out.println((2^0)*2); // (2 XOR 0) * 2 = 4
System.out.println(2^4);     //  2 XOR 4      = 6

XOR是排他性分离,只有在输入不同时才输出true。以下是整个技巧:

代码语言:javascript
运行
复制
2^0 = 2 XOR 0 = (0010) XOR (0000) = (0010) = 2 
2^4 = 2 XOR 4 = (0010) XOR (0100) = (0110) = 6
票数 10
EN

Stack Overflow用户

发布于 2016-10-01 08:17:48

检查这个链接

http://bmanolov.free.fr/javaoperators.php

2^0*2=2

  • 具有较高的优先级,所以您首先要计算0*2,即0,然后用2计算它,它将返回2。

(2^0)*2

()具有更高的优先级,所以首先计算2^0,然后乘以2

票数 2
EN

Stack Overflow用户

发布于 2016-10-01 08:18:15

算子优先

在第一个示例中计算: 0*2 =2^0=2

在第二个例子中,计算:2^0=2*2=4

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39804396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档