Uso l'operazione ~
per la manipolazione dei bit e mi chiedo come Java calcola il numero negativo?In che modo Java calcola i numeri negativi?
ho controllato la documentazione Java:
"L'operatore complemento bit a bit unario '~' inverte una sequenza di bit, ma può essere applicato a qualsiasi tipo integrale, rendendo ogni '0' a '1' e ogni "1" a "0" .Ad esempio, un byte contiene 8 bit, applicando questo operatore a un valore il cui modello di bit è "00000000" cambierebbe il suo modello in "11111111". "
Quindi se int a = 60 (0011 1100)
, quindi int c = ~a (1100 0011)
.
La domanda è, come Java calcola i numeri negativi in modo che 1100 0011 = -61
? L'unico modo 1100 0011
è calcolato -61
è
- il bit più alto è il bit del segno.
-2^6 + 2^1 + 2^0 = -61
.
Ma questo non ha senso per me.
È Sei sulla strada giusta con il bit più alto che è il bit del segno. Per favore vedi [Complemento di due] (http://en.wikipedia.org/wiki/Two's_complement). Il bit firmato – rgettman
viene utilizzato per double e float, il che significa che si hanno 0.0 e -0.0, gli interi non vengono eseguiti in questo modo e 'char' non è firmato. –