2011-09-12 12 views
10

Perché32 bit è una breve

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

uguale 4294967295 quando

Math.pow(256,4) 

uguale 4294967296?

Si noti che l'operazione bit a bit è una breve. Perchè è questo?!

risposta

13

Perché zero occupa un valore binario.

4294967296 è il numero di "slot" a 32 bit, 4294967295 è il numero decimale che occupa lo slot più alto.

+0

Duh. hehe (schiaffo sulla fronte) sì è abbastanza ovvio ora. Grazie! – talentedmrjones

8

Perché il primo è 2^32-1 e il secondo è 2^32? Sai che con la prima "istruzione" stai impostando su 1 i primi 32 bit di un valore, giusto?

In 32 bit, il primo bit è "valutati" 1, il secondo 2, il terzo 4 ... The 32th 2147483648. loro somma è 4294967295 :-)

Facciamo un esempio con 8 bit.

Math.pow(256,1) == 256 

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

Capito, grazie. Questo mi aiuta davvero a ricordare le basi che mi sembrava di aver dimenticato;) – talentedmrjones

Problemi correlati