简短的问题。我在Java中进行位/字节操作时很新,但我发现了一些奇怪的东西。
以下代码作为输出:
ID |Identifier1 | Identifier2
---------------------------------
1 | a | c
2 | b | f
3 | a | g
4 | c | h
5 | b | j
6 | d | f
7 | e | k
8 | i |
9 | l | h
代码:
Identifier | Gr_ID | Gr.Members
---------------------------------------------------
a | 1 | (a,c,g,h,l)
b | 2 | (b,d,f,j)
c | 1 | (a,c,g,h,l)
d | 2 | (b,d,f,j)
e | 3 | (e,k)
f | 2 | (b,d,f,j)
g | 1 | (a,c,g,h,l)
h | 1 | (a,c,g,h,l)
j | 2 | (b,d,f,j)
k | 3 | (e,k)
l | 1 | (a,c,g,h,l)
i | 4 | (i)
为什么,即使在第5行和第7行代码中为索引赋值的操作相同,该索引也有不同的值?
就像我说的,我是按位/字节操作的新手,所以我可能会遗漏一些背景信息。
答案 0 :(得分:0)
index
的第一个分配发生在这里的括号中:
in = (nodes[(index = nodes.length - 1) & hash]) != null;
哪个是
index = nodes.length - 1
并且值为"两个"。你的第二个任务(index = (nodes.length - 1) & hash;
)有所不同;您添加了一个& hash
,大概有两位0
,因此当您执行按位&
时,它变为0
。
答案 1 :(得分:0)
(index = nodes.length - 1) & hash
将nodes.length - 1
分配给index
,然后将其与hash
进行按位分配。
index = (nodes.length - 1) & hash
使用nodes.length - 1
按位hash
,然后将结果分配给index
。
不一样。