Wie packe ich 32 Booleans in einen unsigned int ????
Booleans
-
-
Jedes nte Bit im int auf 1 setzen wenn true, ansonsten auf 0 setzen.
-
Wie mache ich das in Java prgrammiertechnisch ?
Da soll es irgendwelche Bitweise Operationen geben !
-
-
Ok ! Das mit BitSet habe ich verstanden, ist auch ganz einfach.
Aber zu meiner Aufgabe habe ich folgenden Kommentar bekommen von meiner Übungsgruppenleiterin:
In der Aufgabe
soll eine neue Klasse "Set" zur Verwaltung von boolschen Mengen implementiert
werden, die nicht auf bestehenden Klassen, wie z.B. HashSet, aufsetzt. Die
Klasse soll Methoden zum Hinzufuegen, Entfernen, usw. einzelner Elemente
bereitstellen. Der Knackpunkt ist die interne Realisierung.
Eine Menge besitzt immer eine Groesse n. Das besagt, dass die Elemente 0,1,
2,... bis n-1 in der Menge enthalten sein koennen. Eine Menge soll jetzt
in Variablen des Typs unsigned in abgespeichert werden. Das heisst: jeder
unsigned int hat 32 bits, kann also 32 Elemente der Menge aufnehmen. Nehmen
wir mal an, eine 32-elementige boolsche Menge soll erzeugt werden, dann
reicht eine Variable des Typs unsigned int hierfuer aus. Das erste Bit zeigt
an, ob das Element 0 in der Menge enthalten ist, das zweite ob 1 drin ist, usw.
Mengenoperationen, wie z.B. das Loeschen eines Elementes werden nun ueber das
Umsetzen von Bits der Variablen realisiert. Soll z.B. die Null aus der Menge
rausgeschmissen werden, muss das erste Bit auf Null gesetzt werden, usw.
Java bietet Funktionen zur bitweisen Manipulation von Variablen an, und sonst
kann man die Bits auch durch arithmetische Operationen umsetzen, ist aber
komplizierter. Bei groesseren Mengen muss man entsprechend mehrere Variablen
des Typs unsigned int haben, damit alle Elemente reinpassen.Da verstehe ich nun den Zusammenhang nicht.
Wie soll ich das umsetzen. Es gibt doch keinen unsigned int in Java, also muss ich alle negativen Zahlen herausfiltern usw.Die Aufgabe sagt mir nichts...
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!