这段代码是否符合我的想法。这是否将索引向右移动一个位置。
0011 would be come 0001 <-- because the sign bit is copied to the new position. I know that it is different than >>> which moves zeroes in the closest position.
binarray[i>>2]
代码在这里:
str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF);
我一整天都在看这个,我再也看不到了!!!
更多代码:
lX8 = (lX & 0x80000000);
如果我看到类似上面的内容,那就意味着&amp;比较两个数字或变量中的每个位,在本例中为0x8000000,这是二进制格式的0x8000000值。
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
这段代码很好地将这些位加在一起,但是是0x3FFFFFFF(这个值在二进制中转换成什么?)
h1 = bits >> 18 & 0x3f;
从上面可以看出,这些位正在向右移动18和0x3f其中0x3f是HEX所以我想象18是十进制的。
问题:这是否全部转换为二进制,然后先使用?
答案 0 :(得分:2)
几乎。它实际上将它向右移动了两个位置,而不是一个位置。
'&gt;&gt;'右边的数字指定移位它的位数。