如何显示这种类型的位模式?

时间:2020-02-19 15:49:18

标签: javascript bit-manipulation

例如,如果我这样做:

  let sieve = new Uint32Array(1).fill(1);

我想看看索引0处的位模式

0000000000000000000000000001

我想将其打印到控制台上,以便获得如下内容:

0 0
1 0
2 0
3 0
.
.
.
31 1

我可以使用>>来简单地向右移动以获取1,还是必须将&用作按位AND?

从另一方面来说,如果切换到此处这样的带符号表示,会产生影响吗?

Int32Array

2 个答案:

答案 0 :(得分:1)

props相关的事情没有什么特别的事情要做……您可以像对待任何整数一样处理Uint32Array

sieve[0]

答案 1 :(得分:1)

这只是一个数字到二进制的转换。

let arr = new Uint32Array(1).fill(1);
for (let i = 0; i < 32; i++) {
  console.log(i, (arr[0] >>> i) & 1);
}

实际上,数字来自Uint32Array并没有什么不同,但这也许是因为您简化了问题。

还请注意,您希望在问题中打印为“ 31”的“ ones”位实际上是第一位,因为从右边的零(最低有效位)开始,对这些位进行计数。如果您真的想按问题中的非标准方式来计算,那么:

let arr = new Uint32Array(1).fill(1);
for (let i = 0; i < 32; i++) {
  console.log(i, (arr[0] >>> (31 - i)) & 1);
}


编辑:为了即使设置了MSB(“符号位”),值也正确,必须使用无符号位移位(>>>)。

相关问题