Dezimalzahl in Binärzahl umwandeln in C?
Wie rechne ich in C dezimahlszahlen in Binärzahlen. Wie programmiere ich so was. Brauche es für eine Prüfung
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.
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?
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.
Aber wie soll ich das in die if Anweisung schreiben
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!
@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
Schreiben Sie ein Programm, das eine ganze Zahl einliest, und diese Zahl als Binärzahl am Bildschirm ausgibt.
Das wäre die Angabe