Announcement

Collapse
No announcement yet.

Dualzahlen von recht nach links ausgeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Dualzahlen von recht nach links ausgeben

    Hallo Profis,

    ich möchte eine Funktion erstellen, welche eine vom Hauptprogramm übergebene Dezimalzahl in Dualzahlen umwandelt und sie von rechts nach links ausgibt, nicht wie gewöhnlich von links nach rechts!

    Soweit habe ich alles:
    #include <iostream.h>
    #include <conio.h>

    long dual(long zahl)
    {
    long zahl2;
    do
    {
    zahl2 = zahl % 2;
    zahl = zahl / 2;
    if (zahl2>0)
    cout<< " 1\t ";
    else
    cout<< " 0\t ";
    }
    while (zahl>0);
    }

    main()
    {
    long dez;
    char Ant;
    do
    {
    clrscr();
    cout<< "Dezimalzahl wird eingelesen, die als Dualzahl zurückgegeben wird!\n";
    cout<< "Geben Sie die Dezimalzahl jetzt ein: ";
    cin>> dez;
    dual(dez);
    cout<< "\nNochmal?(j/n): ";
    cin>> Ant;
    }
    while ((Ant=='j') || (Ant=='J'));
    }
    Zum Beispiel bei Eingabe von 41 muss die Dualzahl so aussehen: 1 0 1 0 0 1, statt 1 0 0 1 0 1!
    Könnt Ihr mir ein Tipp geben?

    Danke im Vorraus.

    Peace
    Ozzy

  • #2
    http://www.marquardtnet.info/cecke/q...quicky_07.html

    41 ist binär 101001.

    Eingabe von 41 muss die Dualzahl so aussehen: 1 0 1 0 0 1, statt 1 0 0 1 0 1!
    Dann ist aber die Ausgabe von li nach re???

    und sie von rechts nach links ausgibt,

    Was nun?
    Zuletzt editiert von Christian Marquardt; 31.08.2008, 14:36.
    Christian

    Comment


    • #3
      ja, aber wie bringst du das deinem besten kumpel, dem pc bei?

      Comment


      • #4
        ???? Das muss man jetzt nicht verstehen???
        Christian

        Comment


        • #5
          gehen wir mal nach dem code von mir aus.
          denn der code, der auf der von dir verlinkten seite steht, ist schonmal falsch..
          denn wenn du 0 als dezimalzahl eingibst, muss das programm auch laufen.

          Comment


          • #6
            denn der code, der auf der von dir verlinkten seite steht, ist schonmal falsch..
            Wenn du meinst....
            Christian

            Comment


            • #7
              sorry, werde wahrscheinlich falsch verstanden..
              aber stell dir vor, man kann dezimalzahlen auch anders darstellen, nämlich mit potenzen.
              und 0 hoch 0 ist eben 1
              insofern ist die kopfgesteuerte schleife falsch..
              oder irre ich mich?

              Comment


              • #8
                Aha, fein, und was haben Potenzen mit der Darstellung eines int als Binärstring zu tun?
                Christian

                Comment


                • #9
                  schau dir mal die schleife auf der verlinkten seite an..

                  Comment


                  • #10
                    Was soll ich mir da anschauen?

                    Mir reicht aus, dass das richtige Ergebnis bei raus kommt.

                    http://www.marquardtnet.info/cecke/links.7/bild2.jpg
                    Zuletzt editiert von Christian Marquardt; 31.08.2008, 16:24.
                    Christian

                    Comment


                    • #11
                      for (int iIdx = 0x80000000; iIdx > 0; iIdx>>=1)
                      if (Zahl & iIdx) cout<< " 1\t ";
                      else cout<< " 0\t ";

                      Comment

                      Working...
                      X