Javascript 如何获得可用的无符号32位整数?
它以数组形式存在(签名版本为),但我被告知,一旦访问该值,它将成为一个普通的JS编号Javascript 如何获得可用的无符号32位整数?,javascript,Javascript,它以数组形式存在(签名版本为),但我被告知,一旦访问该值,它将成为一个普通的JS编号 let number = (new Unit32Array(1)).fill(1)[0]; 其中,变量号被实现为双精度,一旦执行逐位操作,它将转换为32位有符号整数 如果你真的可以在数组中使用未签名的表示形式,我就不理解Unit32Array的用途,也就是说,一旦你访问了它,它就会以一个正常的数字弹出 function analyze () { // let test = 2147483647; // m
let number = (new Unit32Array(1)).fill(1)[0];
其中,变量号被实现为双精度,一旦执行逐位操作,它将转换为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
*/
函数分析(){
//let test=2147483647;//最大32位整数
//let test=-2147483647;//最小32位整数
for(让place=0;place<32;place++){
设power2=Math.pow(2,place);
设位=测试和电源2;
console.log(位置,位)
}
}
分析();
/*
2^0是1是0x1
2^1等于2
2^2等于4
2^3等于8
.
.
2^31是2147483648
2^32是4294967296
*/
使用三次右移将数字用作无符号。它从本质上防止符号扩展(并与UINT32阵列配合使用)
大多数人都不知道JavaScript可以很好地处理位操作。但是,您需要将其与
uint是无符号整数。Unit32Array是无符号整数的数组。这是一个很酷的技巧。您只是将符号位转换为值位,因此2^32是4294967296,而将5保留在原位。。。所以96而不是91结束了。
> var myNumber = -5;
-5
> myNumber >>> 0
4294967291
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