数组的下标是否被移到了正确的位置向左还是向右

Is my array index being shifted to the correct position to the right or left?

本文关键字:位置 是否 下标 数组      更新时间:2023-09-26

这段代码是我认为它应该做的吗?这是否将索引向右移动一个位置?

       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);

如果我看到类似上面的内容,那就意味着&比较两个数字或变量中的每一位,在这种情况下是0x8000000在这种情况下,0x8000000的二进制格式的实际值是什么。

     lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);

这段代码可以很好地将位加在一起,但是是0x3FFFFFFF(这个值在二进制中转换成什么?)

     h1 = bits >> 18 & 0x3f;
上面的

this表示bits右移了18 &0x3f,其中0x3f是十六进制,所以我认为18是十进制。

问题:这些都转换成二进制然后先使用吗?

差不多了。它实际上是向右移动了两个位置,而不是一个。

'>>'右边的数字指定要移动多少位。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators % 3 e % 3 e_ % 28 sign-propagating_right_shift % 29日