Mittelquadratmethode für Hexadezimalzahlen

Elli_Einsteiger

Neues Mitglied
Hallo, ich soll eine Java-Applikation schreiben, die ein Middlesquare Generator für vierstellige Hexadezimalzahlen realisiert. Dafür sollen wir den Datentyp long verwenden. Als Hinweis wurde gegeben, dass die Benutzung von Hexadezimal-Konstanten (z.B. 0x100) die Implemtation erleichtern kann. Ich finde leider nicht heraus, wie genau ich schreiben kann, dass mit Hexadezimal-Werten gerechnet werden kann. Das Einzige was ich gefunden habe war folgender Ausdruck : String hex = Integer.toHexString(a); . Allerdings führt dies zu Fehlermeldungen. Zudem bin ich mir auch ziemlich sicher, dass der Code so nicht richtig ist😅 Da ich sehr neu in diesem Thema bin habe ich leider so langsam auch keine Ideeansätze zur Lösung mehr.

Java:
public class HaseIgel {
        public static void main(String[] args) {

        long a = Integer.parseInt(args[0], 16);  //long für
        String hex = Integer.toHexString(a);

                for ( long i = 0; i <= 101; i++) {//aktualisieren
                System.out.println(a);  // Ausgeben für jeden Schleifendurchlauf
                a = a*a;  // Quadrieren
                a = a/100; //letzte  Ziffern entfernen
                a = a%10000; // erste beiden Ziffern entfernen


                }

       System.out.println(a);
   }
}
 
Hexadezimalzahlen sind ja nur eine Repräsentation einer Zahl. Die Zahl mit der Dezimaldarstellung 255 kann also auch in Hexadezimal als 0xFF oder in z.B. Binär als 0b11111111 repräsentiert werden.
Wichtig wird die gewählte Darstellung einer Zahl, wenn wir jetzt aber wissen wollen, was die "mittleren" zwei Ziffern (in eben dieser Repräsentation einer Zahl) sein sollen.
Bei der Zahl mit der Dezimaldarstellung 4369 wären z.B. die mittleren zwei Ziffern (in dieser Basis/Darstellung) = "36" und in der Hexadezimaldarstellung dieser selben Zahl 0x1111 wären die mittleren zwei Ziffern (in dieser Basis/Darstellung) "11". Es ist aber immer noch dieselbe Zahl.
Du kannst in Java also nicht sagen, dass mit "hexadezimalen Zahlen" gerechnet werden sollen, sondern nur, wie eine textuelle Darstellung einer Zahl (also z.B. als String oder als Literal in der Programmiersprache) zu interpretieren ist.

Du kannst die zwei mittleren Hexadezimalziffern eines Integer `x`, der eine Zahl darstellt, dessen Hexadezimaldarstellung genau 4 Ziffern hat, einfach bestimmen, indem du die Zahl `x` durch 16 teilst und alles ab 255 abschneidest. Aktuell rechnest du anscheinend noch im Zehnersystem.
 

Neue Themen


Zurück
Oben