2011-09-12 15 views
10

¿Por quées una corta

((255<<24)|(255<<16)|(255<<8)|255)>>>0 

es igual al 4294967295

Math.pow(256,4) 

es igual 4294967296?

Observe que la operación bit a bit es breve. ¡¿Por qué es esto?!

Respuesta

13

Porque el cero toma un valor binario.

4294967296 es el número de "ranuras" que le da 32 bits, 4294967295 es el número decimal que ocupa la ranura más alta.

+0

Duh. jeje (palmada en la frente) sí, es bastante obvio ahora. ¡Gracias! – talentedmrjones

8

Porque la primera es 2^32-1, y la segunda es 2^32? Usted sabe que con la primera "declaración" está configurando en 1 los primeros 32 bits de un valor, ¿verdad?

en 32 bits, el primer bit es "valorado" 1, 2 el segundo, el tercero ... El 4 32th 2147483648. su suma es 4294967295 :-)

Vamos a hacer un ejemplo con 8 bits.

Math.pow(256,1) == 256 

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255. 
+0

Entendido, gracias. Eso realmente me ayuda a recordar los conceptos básicos que parecía haber olvidado;) – talentedmrjones

Cuestiones relacionadas