java 中^什么意思?h ^= (h >>> 20) ^ (h >>> 12); Java一段代码看不明白,在线等

Java\u7684\u4ee3\u7801\u662f\u4ec0\u4e48\u610f\u601d\uff1f

\u4fdd\u8bc1hashCode \u4e0d\u540c\u7684\u7b97\u6cd5\uff0c\u5f88\u591a\u4eba\u90fd\u7814\u7a76\u8fd9\u4e2a\u7b97\u6cd5\uff0c\u7b97\u6cd5\u5f88\u591a
\u8fd9\u4e2a\u600e\u4e48\u4fdd\u8bc1\u7684\u6211\u4e0d\u77e5\u9053
\u4f46\u662f\u6211\u53ef\u4ee5\u7ed9\u4f60\u89e3\u91ca\u4e0b\u7b97\u5f0f
int \u662f4\u4f4dbyte\u7684 4*8=32bit \u4e00\u4e5f\u6ce8\u610f\u5230\u4e8612+20=32
h ^= (h >>> 20) ^ (h >>> 12);\u610f\u5473\u7740h=h\u7684\u524d12\u4f4d\u4e0d\u53d8+\u4e2d\u95f4\u76848\u4f4d\u4f4d\u4e2d\u95f4\u76848\u4f4d\u548c\u524d8\u4f4d\u5f02\u6216\u503c+\u540e12\u4f4d\u4e3a\u540e12\u4f4d\u548c\u524d\u95f412\u4f4d\u548c9-20\u4f4d\u7684\u5f02\u6216\u503c\uff08+\u4e0d\u662f\u52a0\u6cd5\u662f\u8fde\u63a5\uff0c\u4e00\u517132\u4f4d\uff09
h ^ (h >>> 7) ^ (h >>> 4); \u4e4b\u540e\u518d\u7528\u7c7b\u4f3c\u7684\u65b9\u5f0f
\u65b0h=\u524d4\u4f4d\u4e0d\u53d8+\u524d3\u4f4d\u548c5-7\u4f4d\u5f02\u6216\u503c+\u524d25\u4f4d\u548c\u540e25\u4f4d\u548c4-28\u4f4d\u7684\u5f02\u6216\u503c

\u4fdd\u8bc1hashCode \u4e0d\u540c\u7684\u7b97\u6cd5\uff0c\u5f88\u591a\u4eba\u90fd\u7814\u7a76\u8fd9\u4e2a\u7b97\u6cd5\uff0c\u7b97\u6cd5\u5f88\u591a
\u8fd9\u4e2a\u600e\u4e48\u4fdd\u8bc1\u7684\u6211\u4e0d\u77e5\u9053
\u4f46\u662f\u6211\u53ef\u4ee5\u7ed9\u4f60\u89e3\u91ca\u4e0b\u7b97\u5f0f
int \u662f4\u4f4dbyte\u7684 4*8=32bit \u4e00\u4e5f\u6ce8\u610f\u5230\u4e8612+20=32
h ^= (h >>> 20) ^ (h >>> 12);\u610f\u5473\u7740h=h\u7684\u524d12\u4f4d\u4e0d\u53d8+\u4e2d\u95f4\u76848\u4f4d\u4f4d\u4e2d\u95f4\u76848\u4f4d\u548c\u524d8\u4f4d\u5f02\u6216\u503c+\u540e12\u4f4d\u4e3a\u540e12\u4f4d\u548c\u524d\u95f412\u4f4d\u548c9-20\u4f4d\u7684\u5f02\u6216\u503c\uff08+\u4e0d\u662f\u52a0\u6cd5\u662f\u8fde\u63a5\uff0c\u4e00\u517132\u4f4d\uff09
h ^ (h >>> 7) ^ (h >>> 4); \u4e4b\u540e\u518d\u7528\u7c7b\u4f3c\u7684\u65b9\u5f0f
\u65b0h=\u524d4\u4f4d\u4e0d\u53d8+\u524d3\u4f4d\u548c5-7\u4f4d\u5f02\u6216\u503c+\u524d25\u4f4d\u548c\u540e25\u4f4d\u548c4-28\u4f4d\u7684\u5f02\u6216\u503c

异或,就是转化为二进制后相对位比较相同的为0不同的为1
h = h异或(h >>> 20)异或(h >>> 12)
>>> 是转化为二进制右移位,空出来的补0

ξq#__=()……,……:)✔《✘✘,》

“按位异或”运算符,是双目运算。
按位异或运算符^

逻辑运算均是按位进行操作,真值表如下:

AND (位与&) OR ( 位或| ) XOR ( 位异或^ )
1 & 1 = 1

1 & 0 = 0

0 & 1 = 0

0 & 0 = 0
1 | 1 = 1

1 | 0 = 1

0 | 1 = 1

0 | 0 = 0
1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

例如:10100001^00010001=10110000
0^0=0,0^1=1 0异或任何数=任何数

1^0=1,1^1=0 1异或任何数=任何数取反

任何数异或自己=把自己置0

扩展阅读:java入门网站 ... java 中文翻译 ... javascript入门 ... java中 比较的是什么 ... java io 是什么意思 ... java a++和++a的区别 ... java xpath ... java remove ... java中的 运算符什么意思 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网