====== Dezimalzahl als Dualzahl ausgeben ====== ===== C ===== ==== Lösung mit UND-Operator ==== #include 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; } ==== Lösung mittels Modulo ==== 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. #include void dec2bin(int num) { if (num>0) { dec2bin(num/2); printf ("%d", num%2); } } int main () { int num=0; printf("Zahl eingeben: "); scanf("%d", &num); dec2bin(num); return 0; } ===== Fortran ===== 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 ===== Haskell ===== dec2bin :: Int -> IO() dec2bin zahl | zahl > 0 = do dec2bin ( zahl `div` 2 ) putStrLn ( show ( zahl `mod` 2 )) | otherwise = return () ===== Rust ===== fn dec2bin ( i: i32, f: bool ) { if f { print!("0b") } if i > 0 { dec2bin ( i/2, false ); if i % 2 == 0 { print! ("0"); } else { print! ("1"); } } } fn main() { let input: i32 = 42; print!("{} in decimal: ", input); dec2bin ( input, true ); }