Hexa in Binär

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hexa in Binär

    Moin,

    ich habe folgendes

    1. Problem:
    Ich möchte einen Umrechner schreiben indem man eine Hexadezimale Zahl eingibt und dann daraus eine Binäre Zahl herausbekomme.
    Ich habe jetzt echt schon eine halbe ewigkeit herum probiert, doch ist irgendwie nix bei rum gekommen :(
    Kann mir vielleicht irgendwer bei Code helfen?



    2. Problem:

    Ich habe einen zweiten Code geschrieben mit dem man eine Binäre Zahl eingeben kann und als Ergebnis eine Dezimal Zahl herauskommen soll. Dies klappt zwar, nur nicht wie es sein soll.
    Vielleicht mache ich auch einen simplen Fehler :O ?

    Also ich muss bei der Eingabe die Binäre Zahl verkehrt herum eingeben, damit die Dezimale Zahl am Ende richtig ist. Weiß vielleicht jemand was ich am folgendem Code falsch mache?

    Ich weiß, dass man die Variablen kürzer gestallten könnte :D

    Quellcode

    1. int main()
    2. {
    3. int i;
    4. int laenge;
    5. string binaer_dezimal;
    6. int binaer_dezimal_ergebnis = 0;
    7. int binarray[16]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    8. int pot [16] = {1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
    9. switch(auswahl) // 'auswahl' ist für das menü
    10. {
    11. case 3: {
    12. cout << "\n\n Bitte geben Sie nun ihre Bin\x84 \brzahl ein.\n\n";
    13. cout << " Eingabe: ";
    14. cin >> binaer_dezimal;
    15. cout << "\n Ergebnis: ";
    16. laenge = binaer_dezimal.length();
    17. for (i=0; i<laenge; i++)
    18. {
    19. binarray[i] = (int)binaer_dezimal[i]-48;
    20. binaer_dezimal_ergebnis = binaer_dezimal_ergebnis + binarray[i]*pot[i]);
    21. }
    22. cout << binaer_dezimal_ergebnis;
    23. }
    24. break;
    25. default: {
    26. cout << "blablablabalbal\n";
    27. }
    28. }
    29. system("PAUSE");
    30. return EXIT_SUCCESS;
    31. }
    Alles anzeigen
  • Öhm:

    Die Dezimalzahl 45234 wird ins Hexadezimalsystem umgewandelt

    Gehe nach folgendem Verfahren vor:
    (1) Teile die Zahl mit Rest durch 16.
    (2) Der Divisionsrest ist die nächste Ziffer (von rechts nach links).
    Für Reste > 9 nimm die Buchstaben A, B, C, D, E, F
    (3) Falls der (ganzzahlige) Quotient = 0 ist, bist du fertig,
    andernfalls nimm den (ganzzahligen) Quotienten als neue Zahl
    und wiederhole ab (1).

    45234 : 16 = 2827 Rest: 2 --> Ziffer: 2
    2827 : 16 = 176 Rest: 11 --> Ziffer: B
    176 : 16 = 11 Rest: 0 --> Ziffer: 0
    11 : 16 = 0 Rest: 11 --> Ziffer: B

    Resultat: B0B2

    Die Dezimalzahl 45234 wird ins 2er-System umgewandelt

    Gehe nach folgendem Verfahren vor:
    (1) Teile die Zahl mit Rest durch 2.
    (2) Der Divisionsrest ist die nächste Ziffer (von rechts nach links).
    (3) Falls der (ganzzahlige) Quotient = 0 ist, bist du fertig,
    andernfalls nimm den (ganzzahligen) Quotienten als neue Zahl
    und wiederhole ab (1).

    45234 : 2 = 22617 Rest: 0
    22617 : 2 = 11308 Rest: 1
    11308 : 2 = 5654 Rest: 0
    5654 : 2 = 2827 Rest: 0
    2827 : 2 = 1413 Rest: 1
    1413 : 2 = 706 Rest: 1
    706 : 2 = 353 Rest: 0
    353 : 2 = 176 Rest: 1
    176 : 2 = 88 Rest: 0
    88 : 2 = 44 Rest: 0
    44 : 2 = 22 Rest: 0
    22 : 2 = 11 Rest: 0
    11 : 2 = 5 Rest: 1
    5 : 2 = 2 Rest: 1
    2 : 2 = 1 Rest: 0
    1 : 2 = 0 Rest: 1

    Resultat: 1011000010110010

    So große Probleme beim Algo?
    Versuchs mal so.

    MfG
    Check
  • Weiss nicht welche Sprachmittel du bei der Aufgabe nutzen darfst?
    Hexadezimale Zahlen eingeben in C++: Entweder über Strings und die dann entsprechend umbauen oder über C++ Manipulatoren.

    Der Weg, das mittels C-Sprachmitteln zu lösen, ist ja auch noch theoretisch möglich. Den Weg sollte man aber nur nehmen, wenn der Aufgabesteller dies ausdrücklich fordert?

    Das eleganteste in C++ ist der Weg mit dem Manipulator 8)

    MfG bcc-fan