#include <stdio.h> int main () { int zahl; printf ("Bitte eine Zahl eingeben: \n"); scanf("%d", &zahl); int bin=1<<((sizeof(int)*8)-2); for (int i=0; i<(sizeof(int)*8) && bin>0; i++) { if ((zahl & bin)!=0) printf ("1"); else printf ("0"); bin=bin>>1; } printf("\n"); return 0; }
Hier ist dec2bin eine rekursive Funktion. Bei der Modulo-Rechnung erhalten wir immer die letzte Stelle, wir wollen aber mit der ersten Stelle anfangen. Also teilen wir zuerst die Zahl bis sie 0 ist, erst dann fangen wir an die letzten Stellen aller Aufrufe nacheinander auszugeben. Dh. wir steigen erst rekursiv bis zur ersten Stelle ab, dann geben wir die Stellen beim rekursiven Aufstieg aus.
PROGRAM main integer :: zahl = 0; write (*,"(A,$)") "Bitte eine Zahl eingeben: " read (*,*) zahl call dec2bin_mod ( zahl ) write (*,*) " " END PROGRAM recursive SUBROUTINE dec2bin_mod ( zahl ) integer zahl integer tmp if (zahl > 0) then tmp = mod(zahl, 2) call dec2bin_mod ( zahl / 2 ) write (*,"(I1,$)") tmp endif END SUBROUTINE