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?
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
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%Tags und Links java