Heim >Java >javaLernprogramm >Warum erzeugt „value & 0xff' in Java einen vorzeichenlosen Wert, obwohl „value' ein vorzeichenbehaftetes Byte ist?
Bitweise Manipulation mit Wert & 0xff in Java
In diesem Java-Codeausschnitt:
<code class="java">byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned) int result = value & 0xff;</code>
stellt sich die Frage : Warum erzeugt die bitweise UND-Verknüpfung (&) zwischen Wert und 0xff das Ergebnis 254 (ohne Vorzeichen) statt -2 (mit Vorzeichen) wie erwartet?
Im Gegensatz zu C ist Byte in Java ein vorzeichenbehafteter Typ. Das Zuweisen eines Werts zu int ohne bitweise Manipulation würde zum vorzeichenbehafteten Wert -2 führen. Durch die Verwendung von & mit 0xff wird jedoch der beabsichtigte vorzeichenlose Wert erreicht.
Der Schlüssel hier ist, dass & mit int-Werten arbeitet. Wenn ein Wert (ein Byte) mit & verwendet wird, wird er zunächst zu einem int heraufgestuft. Ebenso ist 0xff ein int-Literal. Die &-Operation ergibt dann den 8-Bit-Binärwert aus dem Wert, der in den niedrigstwertigen 8 Bits des Ergebnisses platziert ist.
In diesem Beispiel:
Diese bitweise Manipulation wird häufig verwendet um bestimmte Bits zu extrahieren oder die vorzeichenlose Natur eines Werts beizubehalten, insbesondere in Low-Level-Programmier- oder Datenmanipulationsszenarien.
Das obige ist der detaillierte Inhalt vonWarum erzeugt „value & 0xff' in Java einen vorzeichenlosen Wert, obwohl „value' ein vorzeichenbehaftetes Byte ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!