Dezimalzahl in Binärzahl umwandeln in C?

3 Antworten

Du musst die Zahl jeweils durch 2 dividieren, das Ergebnis daraus wieder durch 2 dividieren und am Schluss den Rest dann ausgeben.

Du legst für den Rest entweder ein Feld an oder jeweils eine Variable.

Z.B. so:

#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[]){
    int d = 123, n = ceil(log(d)/log(2)); char b[n+1]; b[n]=0;
    for(int i = n - 1; i >= 0; b[i--] = '0' + (d & 1), d >>= 1);
    printf("%s\n",b);
}

P.S.: Falls du auch führende Nullen (sofern vorhanden) mit dabei haben willst (also auf die nächsten vollen 8 Bit gepaddet), ist die notwendige Änderung nur minimal.

Woher ich das weiß:eigene Erfahrung
Wie programmiere ich so was.

Was genau willst du programmieren? C legt Dezimalzahlen "automatisch" als Binärzählen ab.

Suchst du ein Prigramm das aus einer Dezimalzahl den Binärstring erzeugt?

Oder geht es dir nur um das Wissen, wie man (von Hand) aus einer Dezimalzahl die Binärzahl errechnet?


programmerxd3 
Beitragsersteller
 22.01.2019, 20:41

Schreiben Sie ein Programm, das eine ganze Zahl einliest, und diese Zahl als Binärzahl am Bildschirm ausgibt.

Das wäre die Angabe

0
gfntom  22.01.2019, 20:48
@programmerxd3

Es gibt verschiedene Möglichkeiten, dies zu realisieren, Beispiele:

Durch Subtraktion der jeweils höchstmöglichen 2er-Potenz
Durch Bitweise Wortverknüpfungen
Durch sukzessive Division durch 2 und beachten des Restes.

Als Kurzenleitung für die letzte Methode:

Du überprüfst, ob die Zahl ungerade ist. Wenn ja ist die (nächste) Binärstelle eine 1, ansonsten eine 0. nun dividierst du die Zahl durch 2 (und ignorierst den Nachkommaanteil) und überprüfst erneut auf ungerade.

Dies machst du so lange, bis die Zahl durch die Divisionen 0 geworden ist.

1
programmerxd3 
Beitragsersteller
 22.01.2019, 20:51
@gfntom

Aber wie soll ich das in die if Anweisung schreiben

0
gfntom  22.01.2019, 20:54
@programmerxd3

So, wie du es für richtig hältst!

Ich werde dir hier nicht das ganze Programm schreiben!
Nicht nur deswegen, weil du es nichtmal für Wert hältst, dich für die Info zu bedanken.

Noch einen schönen Tag!

0
programmerxd3 
Beitragsersteller
 22.01.2019, 21:18
@gfntom

@gfntom

SORRY das ich mich nicht bedankt habe habe ich hätte schon danke gesagt inklusive Daumen oben wollte nur wissen was ich in die if Anweisung schreiben soll,aber ist ok danke für deine Hilfestellung

Schönen Dienstag Abend noch

0