Bitweise nicht Operator
Warum bitweise operation (~0);
druckt -1 ? Binär 0 nicht 1 sein soll . warum ?
Kommentar zu dem Problem
Wenn Sie möchten, flip ein einzelnes bit, verwenden Sie
x ^ 1
. Es ist nicht ein 'nicht' - operator. Es ist eine 'Ergänzung' - operator.
@EJP: Ein one - Komplement-operator.
Nein, es ist nicht. Die Sprachspezifikation #4.2.2 definiert "~" als "das bitweise Komplement-operator'. Es gibt keine solche Sache in Java als ein "bit-operator für NICHT'.
@lh3: Nein. Es ist ein Einerkomplement-operator in C und C++.
InformationsquelleAutor der Frage Sawyer | 2010-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie eigentlich ganz in der Nähe.
Ja, das ist absolut richtig, wenn wir reden ein bisschen.
JEDOCH eine
int
deren Wert 0 ist, ist eigentlich 32 bit alle null!~
kehrt alle 32 Nullen auf 32 Einsen.Dies ist die Zweierkomplement-Darstellung von
-1
.Ähnlich:
Ist, für einen 32-bit unsigned
int
in Zweierkomplement-Darstellung,~1 == -2
.Weiter Lesen:
~
~x
gleich(-x)-1
"InformationsquelleAutor der Antwort polygenelubricants
Was Sie eigentlich sagen will, ist ~0x00000000, und dass die Ergebnisse in 0xFFFFFFFF. Für ein (signed) int in java, das bedeutet -1.
InformationsquelleAutor der Antwort LaZe
Könnte man sich vorstellen, das erste bit in einer Zahl unterzeichnet werden -(2x -1), wobei x die Anzahl der bits.
So, da ein 8-bit-Zahl, die den Wert jedes bit (von Links nach rechts):
Nun in Binär, 0 ist natürlich alles 0s:
Und wenn du das bitweise nicht
~
jeder dieser 0 wird eine 1:Dies ist auch hilfreich für das Verständnis overflow:
InformationsquelleAutor der Antwort nickf
~
ist ein bitweiser operator.http://en.wikipedia.org/wiki/Two's_complement
Einige zahlen in Zweierkomplement-form und bit-Weise nicht
~
(genau darunter):InformationsquelleAutor der Antwort N 1.1
Weil
~
ist nicht binäre inversion, es ist bitweise inversion. Binäre inversion wäre!
und kann (in Java) nur angewendet werden, um Boolesche Werte.InformationsquelleAutor der Antwort Bombe
In standard-Binär-Codierung, 0 ist alle 0,
~
ist Bitweises NICHT. Alle 1s (meistens) -1 signed-integer-Typen. Also für ein vorzeichenbehaftetes byte Typ:InformationsquelleAutor der Antwort cletus
Es ist binären inversion, und in der zweiten Ergänzung -1 ist binäre inversion 0.
InformationsquelleAutor der Antwort Daniel Fath
0 hier ist nicht ein bisschen. Es ist ein byte (mindestens; oder mehr) - 00000000. Bitweise oder wir haben 11111111. Es ist -1 als signed integer...
InformationsquelleAutor der Antwort kpower
Für 32-bit-Ganzzahl mit Vorzeichen
~00000000000000000000000000000000=11111111111111111111111111111111
(-1)InformationsquelleAutor der Antwort YOU
Ich denke, der wirkliche Grund ist der, die ~ wird im Zweierkomplement.
Javascript bezeichnet das Zeichen der tilde, ~, für das zwei-Komplement, obwohl in den meisten Programmiersprachen tilde repräsentiert ein bit toggle für das Einerkomplement.
InformationsquelleAutor der Antwort Nacho