2016-06-24 16 views
-2

Ich muss eine Klasse machen, die eine gegebene Zahl in Basis 10 in Basis 16 umsetzt. Hier ist mein Code soweit, der funktioniert ABER ich muss den Algorithmus MANUELL tun, kann mir jemand Anleitung geben Kann ich das manuell machen? dankeBasis 10 in Basis 16 umwandeln

import com.sun.org.apache.xpath.internal.SourceTree; 

import java.util.LinkedList; 
import java.util.Scanner; 

/** 
* Created by TudorV on 24/06/2016. 
*/ 
public class Main { 
    public static void main(String[] args) { 

     Scanner scn = new Scanner(System.in); 
     int number; 

     System.out.println("Enter a number: "); 
     number = scn.nextInt(); 
     // String string = scn.nextLine(); 
     System.out.println("Your number is: " + number); 
     String output =""; 
     output = Integer.toString(number, 16); 
     System.out.println("output is: " + output); 



    } 

} 
+1

Der Operator% arbeitet als Modulo-Operator, dh er gibt den Rest einer ganzzahligen Division zurück. Das ist alles, was Sie für Ihre Hausaufgaben wissen müssen. – Aziuth

Antwort

0

Schritt 1: Teilen Sie Ihre Zahl von 16 (exp.: 35/16 = 2.1875).

Schritt 2: Subtrahieren Sie die ganze Zahl des Ergebnisses (2.1875 - 2 = 0.1875).

Schritt 3: Multiplizieren mit 16 (0.1875 * 16 = 3). (Rest)

Schritt 4: Wiederholen Sie Schritt eins, indem Sie die Ganzzahl des ersten Ergebnisses durch 16 (2/16 = 0.125) dividieren.

Schritt 5: Wiederholen Sie die Schritte 2-4, bis die ganze Zahl kleiner als 16 ist und einmal durch 16 geteilt wurde.

Beachten Sie jeden Rest (3, 2). Drehen Sie die Bestellung um (2, 3). Das ist Ihr Ergebnis: 0x23

+0

Wie subtrahiere ich die ganze Zahl des Ergebnisses? –

+0

doppelte Nummer; int Rest = Zahl - (int) Nummer; – Shiro

0
  • Definieren Sie ein Array mit der Nummer 16 der Basis. (Array)
  • Store Erinnerung in der Liste. Um Erinnerungen zu erhalten, benutze den Modulo-Operator (%). HINWEIS: Wenn die Erinnerung größer als 9 ist, verwenden wir Zeichen (10 - A, 11 - B ...). Dafür haben wir Speicher 16 Nummer in Array. Wir benutzen dieses Array.
  • Dann number = Zahl/16
  • Wiederholen gleiche Sache bis zur Nummer gleich Null
  • dann die Liste in umgekehrter Reihenfolge oder Speichern in String drucken und zurück als String

prüft Code unten.

public static String convertIt(int number) { 
    String[] array = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
      "A", "B", "C", "D", "E", "F" }; //Define an array which has base 16 number 
    List<String> l = new ArrayList<String>(); //list to store reminder 
    StringBuffer strB = new StringBuffer(); 
    while (number != 0) { 
     l.add(array[number%16]); //store reminder -- NOTE use array 
     number = number/16; //change number 
    } 
    for (int i = l.size()-1; i > -1; i--) { 
     strB.append(l.get(i)); 
    } 
    return strB.toString(); 
} 
0

Ähnlich wie Sie dezimal in Binär konvertieren. (Oder irgendeine andere Base) Denken Sie daran, wie Dezimalzahlen im Zusammenhang zur Basis 10:

ZB: 123

1 * 10^2 + 2 * 10 ^1 + 3 * 10^0 

100 + 20 + 3 = 123 

konvertieren es 16 Basis, es so aussehen sollte wie

7 * 16^1 + 11 * 16^0 = 123 

So sollte dargestellt werden wie 7 11

Überprüfen Sie den folgenden Python-Code:

def convert_base(number, base): 
    result = [] 
    while number > 0: 
     result.append(number % base) 
     number = number/base 
    result.reverse() 
    return result 

print convert_base(17, 16) 
Verwandte Themen