Umstellung auf Binär < Algor.+Datenstr. < Theoretische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:20 Di 25.04.2006 | Autor: | Fahnder |
Aufgabe | Schreiben Sie ein Java- Programm, welches als Eingabe einen Zahl z in Hexadeximaldarstellung (ohne führende Nullen) erhält und als Ausgabe z in (nicht ZKD-) Binärstellung (ohne führende Nullen) liefert, derart, dass das am wenigsten signifikante Bit rechts steht. Nennen Sie ihre Klasse aufgabe7. |
Hi,
also ich habe einen entwurf, weiss aber nicht, ob der überhaupt funktionieren wird.
es handelt sich um eine Übungsaufgabe, die ich morgen abgeben muss.
Hier mein entwurf:
public class aufgabe7{
// Compute the binary representation of a hexadecimal number
// Print z as a binary number
public static void main (String[] args){
int z = "0123456789ABCDEF"; //z is a hexadecimal number
System.out.println("binär: " + Integer.toBinaryString(z));
}
}
Ich weiss, dass sich bei int z ein fehler versteckt, da fehlt noch was. leider komme ich da nicht weiter.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Fahnder
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:08 Di 25.04.2006 | Autor: | Fahnder |
Die Fälligkeit ist nicht ganz richitg, ich brauche das bis spätestens 14 Uhr morgen, falls es jemand schafft, mir zu antworten. Wäre schön
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:28 Mi 26.04.2006 | Autor: | Frank05 |
> Hi,
Hallo,
> also ich habe einen entwurf, weiss aber nicht, ob der
> überhaupt funktionieren wird.
> es handelt sich um eine Übungsaufgabe, die ich morgen
> abgeben muss.
>
> Hier mein entwurf:
> public class aufgabe7{
> // Compute the binary representation of a hexadecimal
> number
> // Print z as a binary number
> public static void main (String[] args){
> int z = "0123456789ABCDEF"; //z is a hexadecimal number
> System.out.println("binär: " +
> Integer.toBinaryString(z));
> }
> }
>
> Ich weiss, dass sich bei int z ein fehler versteckt, da
> fehlt noch was. leider komme ich da nicht weiter.
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
1. Du kannst nicht einer Variablen vom Typ int einfach so einen String zuweisen. Dafür gibts Integer.parseInt
2. Hexadezimalzahlen werden in Java durch ein vorangestelltes 0x gekennzeichnet,
also z.B. int z = 0xDEADBEEF;
3. Ich kann mir kaum vorstellen, dass die Übungsaufgabe mit Integer.toBinaryString gelöst werden soll.. auf der anderen Seite brauchen sich die Übungsleiter nicht wundern wenn es so gemacht wird, da bekanntlich die meisten Studenten versuchen den Weg des geringsten Widerstandes zu gehen.
PS: Wenn du bei dem Ganzen noch was lernen willst solltest du im eigenen Interesse die toBinaryString Method mal selber schreiben.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:15 Mi 26.04.2006 | Autor: | Fahnder |
Hi,
ich habe das jetzt mal ausprobiert, mit deinem Beispiel, es geht, aber sowas ähnliches hatte ich schon, worauf es ankommt, ist, dass ich eine beliebige Zahl in Hexadezimal eingeben kann und deren umwandlung im Binärcoe wird angeben. So wie du das Int beschrieben hast, bekommt man immmer das selbe raus. Bei der Definiton von Int für alles Hexadezimalzahlen, da komme ich nicht weiter.
Fahnder
|
|
|
|
|
Hallo,
also konkret möchtest Du doch folgendes: Benutzer gibt in Hexadezimaldarstellung eine Zahl an und dann wird sie umgewandelt in eine Binärdarstellung. Das besteht prinzipiell aus 3 Schritten:
1. Zahl einlesen -> man erhält einen String bestehend aus den Zeichen 0-9 und A-F (oder gar a-f)
2. Zahl in Binärdarstellung umwandeln (da je eine Hexadezimalstelle durch genau 4 Binärstellen abgedeckt werden, ist eine direkte Umwandlung ohne vorherige Konvertierung in einen int oder ähnliches leicht möglich) -> String mit Binärdarstellung
3. Binärdarstellung ausgeben (und führende Nullen entfernen, wie in der Aufgabe verlangt. Dies würde ich persönlich erst hier machen in einer Programmieraufgabe, weil es dann übersichtlicher ist und auch einfacher)
Ich bin jetzt nicht so ganz drinne in Java, bzw. kenne jetzt jede einzelne Klasse/Methode auswendig und kann Dir keinen vernünftigen Anhaltspunkt geben, ausser dass man zum Einlesen vielleicht einfach System.in verwenden sollte, da dort einfachen String lesen dabei sein sollte. Die Konvertierung kannst Du zeichen für Zeichen machen und dann einfach Stringkonkatenation durchführen (Du brauchst ja für jedes Zeichen in Hexadezimaldarstellung genau 4 Binärstellen). Führende Nullen entfernen sollte dadurch realisierbar sein, dass man den String entsprechend verkleinert (oder Zeichen für Zeichen ausgibt und entsprechende Zeichen einfach weglässt am Anfang).
--
Gruß
Matthias
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:32 Do 27.04.2006 | Autor: | Frank05 |
> ich habe das jetzt mal ausprobiert, mit deinem Beispiel,
> es geht, aber sowas ähnliches hatte ich schon, worauf es
> ankommt, ist, dass ich eine beliebige Zahl in Hexadezimal
> eingeben kann und deren umwandlung im Binärcoe wird
> angeben. So wie du das Int beschrieben hast, bekommt man
> immmer das selbe raus. Bei der Definiton von Int für alles
> Hexadezimalzahlen, da komme ich nicht weiter.
Du kannst es entweder so probieren wie es Matthias vorgeschlagen hat, oder falls es dir lieber ist wenn du die eingegeben Zahl als int zur Verfügung hast kannst du mit Integer.parseInt(String, int) arbeiten. Dabei ist das zweite Argument ein Radix, den du für das Umwandeln von Hexadezimalzahlen mit 16 belegst. Damit reduziert sich das ganze Programm auf:
Integer.toBinaryString(Integer.parseInt(eingabe, 16));
Aber das nur der Vollständigkeit halber.. der eigentliche Übungseffekt geht natürlich bei Verwendung dieser Methoden verloren.
|
|
|
|