栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Javs ^运算符在Java中做什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Javs ^运算符在Java中做什么?

Java中的

^
运算子
^
在Java中,“异或”运算符。

让我们

5^6
举个例子:

(decimal)    (binary)     5     =  101     6     =  110------------------ xor     3     =  011

这是按位(JLS 15.22.1)和逻辑(JLS 15.22.2)xor的真值表:

^ | 0 1      ^ | F T--+-----     --+-----0 | 0 1      F | F T1 | 1 0      T | T F

更简单地,你也可以将xor视为“ this or that,但不是两者都!”。

Exponentiation in Java

至于整数幂运算,不幸的是Java没有这样的运算符。你可以使用

double Math.pow(double, double)
(int如果需要,将结果广播到)。

你还可以使用传统的移位技巧来计算2的幂。也就是说,

(1L << k)
对于的第k次幂是
2 k=0..63

也可以看看
维基百科:算术转换
合并说明:此答案与另一个问题合并,该问题的目的是使用幂运算将字符串转换”8675309”为int而不

Integer.parseInt
用作编程练习(^从现在开始表示幂运算)。OP的意图是进行计算
8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0 = 8675309
;该答案的下一部分将解决此任务不需要求幂的问题。

Horner’s scheme

满足你的特定需求,你实际上不需要计算10的各种幂。你可以使用所谓的Horner方案,它不仅简单而且有效。

由于你是个人练习,因此我不会提供Java代码,但这是主要思想:

8675309 = 8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0        = (((((8*10 + 6)*10 + 7)*10 + 5)*10 + 3)*10 + 0)*10 + 9

起初看起来可能很复杂,但实际上并非如此。你基本上是从左到右读取数字,然后将到目前为止的结果乘以10,然后再添加下一个数字。

以表格形式:

step   result  digit  result*10+digit   1   init=0      8     8   2        8      6    86   3       86      7   867   4      867      5  8675   5     8675      3 86753   6    86753      0867530   7   867530      9          8675309=final


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号