verflixte binärzahlen



  • Hallo ich bin noch totale Anfängerin und soll eine dezimalzahl in binär wandeln!!
    hab mir hier scho so einige sachen hier im forum angeschaut aber bei mir klapptes einfach nicht!

    ich habe versucht es mit Modulo zu verwirklichen, bekomme aber immer nur 000000000 als ausgabe!!

    Könnt ihr mir da vielleicht tipps geben oder gibt es da etwas wo man es direkt mit ausgeben kann so wie bei hex oder oktal?

    Sorry das ich euch mit diesen thema nerve bin aber verzweifelt 😞

    greetz geschen



  • Teile deine dez. Zahl durch 2. Schreibe dir den Rest auf.
    Teile die neue dez. Zahl wieder durch 2. Schreibe dir den Rest wieder auf.
    Tue das solange, bis das Ergebnis Null ist.
    Die Aufgschriebenen Reste ergeben rückwärts gelesen die Zahl im binären
    System.

    Und jetzt bist du dran:
    Versuche es einmal mit Bleistift und Papier und
    bau eine Progarmm draus, dass dies ausführt. 🙂



  • na ich weiss doch das so geht aber das prob is die richtig auszugeben-ich versuch das mit nen array- wie gesagt bekomme nur 000000 oder 1111 und ich finde den verdammten fehler net aber trotzdem danke

    greetz



  • Zeig mal her, was Du hast.



  • ich habe mitlerweile 2 sachen aber ich schick mal des mir Modulo

    printf("Dezimal %d = Oktal %o \n",izahl,izahl);
    printf("Dezimal %d = Hexadezimal %x \n",izahl,izahl);

    for(i=30;i>0;i--)
    {
    ibin=izahl %2;
    izahl>>1;
    ivek[i]=ibin;

    printf("%d",ivek[i]);

    }

    so hab ich das und so geht das auch bei nen kumpel, nur bei mir net!!

    greetz

    P.S. wenn mir jmd helfen will bin auch unter 155348752 in icq zu erreichen, ist vielleicht einfacher!!



  • Warum durchläufst du deine Schleife 30 mal? Was hällst du von einer while-Schleife?
    Und du tust auch nicht das, was ich dir gesagt hab :p. Du gibst die Reste nicht
    rückwärts aus.



  • ich lasse die schleife 30 mal durchlaufen da große zahlen viele bitstellen haben und wir des mit einbeziehen sollen
    eine for schleife nehm ich und lass die "rückwärts" laufen damit die ausgabe aus rückwärts ausgegeben wird
    so hat man mir gesagt könnte es gehen !!

    naja wie gesagt bin halt eine anfängerin und muss noch viel lernen 😃

    grüße und danke



  • Wie wärs, wenn du zuerst das array vorwärts füllst und danach rückwärts
    ausgibst?

    Die for-Schleife ist nicht angemessen: Wenn du auf dem Papier rechnest, hörst
    du auf, wenn die Division null ergibt. Warum übernimmst du das nicht in dein
    Programm?

    Wenn ihr schon Rekursionen behandelt habt, dann denk mal über einen entsprechenden
    Ansatz nach.



  • wozu überhaupt ivek? du speicherst den wert da drinn und gibst ihn sofort aus. gib doch einfach ibin aus...
    ums mal etwas kryptisch zu machen (ich gehe einfach davon aus das zahl ein 32 bit unsigned int ist):

    for(i=31;i>=0;--i)
          if(zahl&(1<<i)) break;
       for(;i>=0;--i)
          putchar(zahl&(1<<i)?'1':'0');
    

    Taurin schrieb:

    Wenn ihr schon Rekursionen behandelt habt, dann denk mal über einen entsprechenden Ansatz nach.

    und zum supermarkt fliegt man mit nem spaceshuttle 😃



  • joah danke ich versuchs mal und ich glaube es klappt weil bis jetz hab ich so mich mal umgeschaut im net und paar gute seiten gefunden.
    Danke für eure hilfe trotzdem, echt net 🙂

    Aber ich hab gleich mal noch eine bescheidene Frage.
    Einerkomplement bekomm ich ja hin aber wie funzt das mit dem Zweierkomplement ?

    Dankööö 😋 👍



  • z ist ein integer, dann ist -z das zweierkomplement davon



  • Hallo,

    Google sagt dies.

    Und tschüß


Anmelden zum Antworten