Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按位OR不返回正确的值_Javascript_Bit Manipulation - Fatal编程技术网

Javascript 按位OR不返回正确的值

Javascript 按位OR不返回正确的值,javascript,bit-manipulation,Javascript,Bit Manipulation,考虑到javascriptint精度精确到15个数字,为什么按位OR(|)返回1410065407,而在以下情况下它应该是==a和&b 设a=99999999;//10天 设b=99999999;//10天 设c=a | b; 设d=b | a; log({a,b,c,d}); //例2 设a2=99999999;//9d 设b2=99999999;//9d 设c2=a2 | b2; 设d2=b2 | a2; log({a2,b2,c2,d2}) […]考虑到javascript int精度精

考虑到javascript
int
精度精确到15个数字,为什么按位OR(
|
)返回
1410065407
,而在以下情况下它应该是
==a和&b

设a=99999999;//10天
设b=99999999;//10天
设c=a | b;
设d=b | a;
log({a,b,c,d});
//例2
设a2=99999999;//9d
设b2=99999999;//9d
设c2=a2 | b2;
设d2=b2 | a2;
log({a2,b2,c2,d2})
[…]考虑到javascript int精度精确到15个数字

不是数字而是32位

值9999999999高于整个32位范围,即4294967296(或2^32),因此发生的情况是,您正在将数字“转换”(钳制)为32位,这将在任何按位运算中发生:

console.log(9999999999>>0);
console.log(9999999999&0xffffffff);
log(9999999999999“15位”仅适用于浮点计算(即使是十进制也只是二进制算术之上的一个破碎的抽象层),而不是整数计算。