它以Uint32Array(签名版本为Int32Array)的数组形式存在,但是有人告诉我,一旦访问此值,它将成为一个普通的JS号。
let number = (new Unit32Array(1)).fill(1)[0];
如果将变量号实现为 double 数,则在执行按位运算后,它将转换为32位带符号整数。
如果您实际上可以在数组中使用未签名的表示形式,那么我就无法理解Unit32Array的用途,即一旦访问它,它就会以正常数字弹出?
function analyze () {
// let test = 2147483647; // max 32 bit integer
// let test = -2147483647; // min 32 bit integer
for(let place = 0; place < 32; place++){
let power2 = Math.pow(2, place);
let bit = test & power2;
console.log(place, bit)
}
}
analyze();
/*
2^0 is 1 is 0x1
2^1 is 2
2^2 is 4
2^3 is 8
.
.
2^31 is 2147483648
2^32 is 4294967296
*/
最佳答案
大多数人不知道JavaScript与按位运算能很好地配合。您需要将其与array buffer配对。
let buffer = new ArrayBuffer(16); // create a buffer of length 16
let view = new Uint32Array(buffer); // treat buffer as a sequence of 32-bit integers