例如,如果我这样做:
let sieve = new Uint32Array(1).fill(1);
我想看看索引0处的位模式
0000000000000000000000000001
我想将其打印到控制台上,以便获得如下内容:
0 0
1 0
2 0
3 0
.
.
.
31 1
我可以使用>>
来简单地向右移动以获取1,还是必须将&
用作按位AND?
从另一方面来说,如果切换到此处这样的带符号表示,会产生影响吗?
答案 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(“符号位”),值也正确,必须使用无符号位移位(>>>
)。