2016-07-01 15 views
1

Ich versuche, eine signierte lange als ein Array von 1s und 0s zu verwenden. Ich muss in der Lage sein, jedes Bit in einem langen zuzuteilen, oder jedes Bit in einem langen zu lesen. Ich bleibe stecken, weil ich nicht scheinen kann, um das Zeichenbit zu lesen oder zu schreiben, ohne den Rest der Bits zu verderben (wegen Zweierkomplement). Ich könnte ein boolesches Array verwenden, um die 1s und 0s darzustellen, aber das nimmt zu viel Speicher in Anspruch. Kennt jemand eine Möglichkeit, jedes Bit in einem einzelnen zu lesen und zu schreiben? Oder kann jemand eine supergedächtniseffiziente Alternative vorschlagen?Lesen/Schreiben von Bits von einer langen

+3

Sie müssen spezifischere über die Schwierigkeit sein, Sie haben. Eine effiziente Alternative finden Sie in Java [BitSet] (https://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html). – shmosel

+0

Verwenden Sie eine Bit-Set-Klasse wie in den vorherigen Kommentaren vorgeschlagen –

+0

Lesen/Schreiben des Vorzeichen-Bit ist absolut in Ordnung, es wird nichts durcheinander gebracht. Zweierkomplement ist egal. Natürlich sollten Sie erwarten, dass der Wert als negativ gedruckt wird, wenn Sie das Vorzeichen setzen, aber das hat keinen Einfluss auf die tatsächlichen Bits. – harold

Antwort