2011-08-05 12 views

Respuesta

2

Me parece que excede el valor entero máximo de JavaScript. El valor máximo admitido para los enteros de JavaScript está especificado en 2^53.

ACTUALIZACIÓN:

Mi respuesta inicial aquí no era correcta - la cuestión no es valor entero máximo de JavaScript, que es el valor máximo de cada operando manejado por el op signo:

var biggest = 4294967291; // maximum 32 bit unsigned integer 
alert(biggest & 1); // alerts 1 
alert((biggest + 1) & 1); // alerts 0 

feliz de codificación !

B

5

Bitwise operators en javascript convertir los operandos en enteros de 32 bits con signo (de los nativos IEEE 754 flotadores números se almacenan en).

+0

Una biblioteca como [bigInt.js] (http://www.leemon.com/crypto/BigInt.html) podría ayudar aquí, aunque no lo he probado personalmente. – darioo

+1

Eso significa que no puede realizar ninguna operación biwise en números mayores que (aproximadamente) 2 mil millones o menores que (aproximadamente) -2 mil millones. Si lo haces, el comportamiento no está definido. –

+0

En realidad, el comportamiento está bien definido. De "Javascript: The Defenitive Guide", página 73: "Si los operadores bit a bit se usan con operandos que no son enteros o demasiado grandes para caber en una representación entera de 32 bits, simplemente fuerzan el operando a enteros de 32 bits soltando de cualquier parte fraccionaria del operando o cualquier bit más allá del 32 °. " –

0

Los operadores bit a bit tratan con un máximo de 32 bits. No sé cómo se define el comportamiento al pedirle que trate con valores más grandes.

Cuestiones relacionadas