Subato

Resource Files

Zahlendarstellungen

Gegeben die kleine Klasse Num, die nur einen einzelnen Zahlenwert in einem Feld enthält. Diese soll erweitert werden, um Methoden, die diese Zahl in verschiedenen Zahlensystemen darstellt.

 

Schreiben Sie für die Klasse folgende Methoden. Versuchen Sie es mit rekursiven Methoden zu lösen.
  • String toBin():
    Es soll ein String zurück gegeben werden, der die Zahl im Dualsystem darstellt. Die Zahl soll immer mit der Ziffer 0 beginnen.
    Beispiele:
    • new Num(2).toBin() ergibt "010"
    • new Num(42).toBin() ergibt "0101010"
  • String toOct():
    Es soll ein String zurück gegeben werden, der die Zahl im Oktalsystem darstellt. Die Zahl soll immer mit der Ziffer 0 beginnen.
    Beispiele:
    • new Num(8).toBin() ergibt "010"
    • new Num(42).toOct() ergibt "052"
  • String toBase(int b):
    Es soll ein String zurück gegeben werden, der die Zahl im Zahlensystem zur Basis b darstellt. Die Zahl soll auch hier immer mit der Ziffer 0 beginnen. Ist die Basis größer 10, so sollen die Großbuchstaben des lateinischen Alphabets für die weiteren Ziffern genommen werdn.
    Beispiele:
    • new Num(2).toBase(2) ergibt "010"
    • new Num(42).toBase(8) ergibt "052"
    • new Num(42).toBase(16) ergibt "02A"
    Hier liegt die Hauptschwierigkeit darin für Basen, die größer 10 sind, die Ziffern zu wählen. Daher ist bereits die Hilfsmethode getDigit vorhanden, die die korrekte Ziffer auswählt.

class Num{ //n is assumed to be a positive number final long n; Num(long n){ assert n>=0; this.n = n; } String toBin(){ //TODO return ""; } String toOct(){ //TODO return ""; } String toBase(int b){ //TODO return ""; } static char getDigit(long d){ return (char) (d<10? '0'+d : 'A'+d-10); } }
java