我的数组索引是否向右或向左移动到正确的位置?

时间:2014-07-11 02:18:58

标签: javascript

这段代码是否符合我的想法。这是否将索引向右移动一个位置。

       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是十进制的。

问题:这是否全部转换为二进制,然后先使用?

1 个答案:

答案 0 :(得分:2)

几乎。它实际上将它向右移动了两个位置,而不是一个位置。

'&gt;&gt;'右边的数字指定移位它的位数。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#%3E%3E_%28Sign-propagating_right_shift%29