Longs in Bitschreibweise

Status
Nicht offen für weitere Antworten.

Schlappohr

Mitglied
Hallo ihr Lieben,

mir liegt folgendes vor: 0x03f804800ff01b00L.
offenbar verbirgt sich dahinter eine ganze Zahl vom Datentyp long bei 64 Bit. Hinter jedem Wert hinter der 0x verbirgt sich also ein Wert, der einen 4 Bit-Block belegt. Wie kann ich nun unkompliziert Java dazu bringen, mir dieses Bitmuster auszugeben?

Vielen Dank für eure Mühe und schöne Feiertage wünscht,

Andreas
 

Schlappohr

Mitglied
Vielen Dank :),

das hat mich schon ein ganzes Stückchen weitergebracht.

Ich habe nun eine Reihe solcher long-Zahlen in einer for-Schleife in Binärdarstellung ausgeben lassen. Eigentlich müssten sich ja in jeder Zeile meiner Ausgabe 64 Bits (also Nullen und Einsen) vorfinden. Aber das genaue Gegenteil passiert. Aus mir unbefindlichen Gründen gibt er mal nur 50, dann mal wieder 54 Zeichen aus etc.

Weiß da jemand Rat?
 

Schlappohr

Mitglied
Jupp, die stimmen, die in diesem Thread als Beispiel ausgebenen Long Zahl sollte auch aus 64 Einträgen bestehen, tut sie aber nicht. Die hier angegebene Ausgabe durch die Methode leifert nur 58 Zeichen.
 

Joker

Bekanntes Mitglied
genau. Und die bekommst du in diesem Beispiel. 4 Stück für die erste hex 0 (0000) und nochmal 2 für die hex 3 (0011).
 

Schlappohr

Mitglied
Hmm... es gibt nicht zufälligerweise eine schöne Möglichkeit sich diese Ausgeben zu lassen?

Meine Aufgabe ist die selbige wie hier www.java-forum.org/de/topic61279_longs-bin-verarbeiten.html

und ich denke die Ausgabe der Reihungen der Longs erfolgt wohl hier am sinnvollsten mit dem Hinweis Long.toBinaryString... aber das Problem evtl dadurch entstehende Problem ist, dass dadurch die Bit-Operationen nicht mehr möglich sind. Lege ich nämlich die entstehenden Strings in solche separat ab, kann ich auf ihnen keine Bit-Operationen durchführen, da dies nur auf ganzen zahlen geht....
 

SnooP

Top Contributor
Also erstmal tu ich mich schwer mit der Aufgabenstellung... was ist eine Reihung von longs... ist ja furchtbar! ...

du sollst offenbar eine long-zahl eingeben oder sogar mehrere? und dann für jede 0 nen " " malen und für jede 1 nen "M"? ... den Rest der Aufgabenstellung mit den Hintergründen etc. hab ich genausowenig verstanden... - vielleicht würde es helfen den Originaltext zu lesen? ;)

Zum Auslesen der Bits empfiehlt sich nicht toBinaryString... das ist vermutlich vom Proff nicht gewollt (ich kann das Orakeln - war lange Zeit Hiwi unter diversen Proffs ;) )... vielmehr soll man via Bitoperationen die Zahl durchkämmen und einen String selbst zusammentüten... via left-shift-operator (<<) und verunden (&) kann man das auch sehr gut machen... - in der java-insel ist die Methode getBit beschrieben, die man für sowas gut verwenden kann - wichtig ist, sie vorher auch zu verstehen ;) .. in einer Schleife kannst du dann also Bit für Bit durchgehen und gucken ob an der jeweiligen Stelle ein Bit gesetzt ist oder nicht... und feddich.

Übrigens muss man sich von der Vorstellung entfernen, dass eine binäre Zahl etwas anderes ist, als eine dezimale oder hexadezimale, nur weil sie andere Ziffern verwendet ;) .. ein 1111 ist auch nur ne 15 oder nen FF je nach Sichtweise und auch auf eine 15 kann man bit-operationen anwenden ;) ...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben