Ich habe den folgenden Code:Bit Order of Java BitSet
byte[] byteArr = new byte[1];
byte b = (byte) Integer.parseInt("127");
byteArr[0] = b;
BitSet bs = BitSet.valueOf(byteArr);
Nach einem Haltepunkt nach der letzten Zeile einstellen, erhalte ich eine unerwartete Debugger Ausgabe:
In binären Begriffen, Es scheint, dass 'bs' den Wert '11111110' hat, während ich erwarte, dass es den Wert '01111111' (127) hat. Es scheint nicht erklärbar mit Kürzung, wie nur die letzten 8 Bits relevant sind (und das MSB von 127 ist nicht festgelegt).
Dies ist ein Problem, weil ich es als Bitmaske für andere Bitstrings verwenden möchte. Was verursacht dieses Verhalten? Gibt es eine Problemumgehung, um die erwartete Bit-Reihenfolge zu erhalten?
Was Position zurück? Das sieht gut aus. Ich bin mir nicht sicher, wie Sie das als "11111110" interpretieren. –
Ich interpretierte {0, 1, 2 ...} als die Indizes der gesetzten Bits innerhalb des BitSet. Da die ersten sieben Bits gesetzt sind, hat das BitSet den Wert '11111110' (dezimal 254). –
@MichaelHang Woher weißt du dann, dass das BitSet 8 Bits repräsentiert? – Manu