Problem bei der Implementierung eines bitweisen UND-Problems in Java

8

Ich versuche, ein Problem zu lösen, bei dem im Grunde ein logisches UND zwischen den Eingabeparametern implementiert wird.

Die Komplexität des Problems hängt von der Größe der Eingabeparameter ab. Um einen Überblick auf hohem Niveau zu geben, versuche ich die Logik ähnlich wie bei

zu implementieren %Vor%

Die Komplexität besteht darin, dass einige der Eingabeparameter 400 Bits lang sein können. Es ist keine echte binäre Zahlendarstellung. Es ist eher eine Positionsdarstellung. Die gleiche Eingabe kann als

dargestellt werden %Vor%

Also im Grunde ist "x" nur ein Präfix mit dem Wert dafür. Dies ist ein ACL-System, das vor langer Zeit entwickelt wurde, und ich versuche, eine Java-Version dafür zu implementieren.

Ich konnte keinen Datentyp in Java finden, mit dem eine binäre Darstellung dargestellt werden könnte, die so groß ist wie 400 Bits. Ich kann auch die Dezimaldarstellung verwenden [dh, x2,3] und sie auch lösen, aber mir fiel nichts anderes ein, als den gesamten Zahlenbereich durchzuschneiden und ihn mit dem anderen Eingabeparameter zu vergleichen. Beide Eingabeparameter könnten auf das gleiche Darstellungsformat [dh binär oder dezimal] normalisiert werden.

Irgendwelche Vorschläge (oder) helfen, wie ich dieses Problem lösen kann?

    
karthik 08.02.2011, 16:41
quelle

3 Antworten

18

Sie könnten ein BitSet verwenden. Es hat Unterstützung für bitweise und-Operationen und sollte 400 Bits recht gut behandeln.

Hier ist ein Beispiel:

%Vor%

Um eine x110101 -Zeichenfolge zu parsen, könnten Sie etwas wie

tun %Vor%

Wenn Ihnen dieser Ansatz immer noch nicht gefällt, können Sie ein Set<Integer> verwenden, das die Independenzen enthält. Um das "und" zwischen zwei solchen Mengen herauszufinden, tust du einfach set1.retainAll(set2) .

Hier ist ein Beispiel:

%Vor%     
aioobe 08.02.2011, 16:43
quelle
4
1

Ein BigInteger sollte auch funktionieren:

  • new BigInteger (binaryString, 2) sollte die Eingabe korrekt analysieren
  • BigInteger implementiert "und"
  • Verwenden Sie testBit (n), um auf die Bits
  • zuzugreifen
mfx 08.02.2011 18:03
quelle

Tags und Links