Ich versuche eine Funktion zu erstellen, die das binäre Äquivalent einer bestimmten Ganzzahl zurückgibt. Aber wenn der Testeingang von 1234 gegeben, gibt sie den falschen Wert sowohl die gegebenen Eingabe der binären und die nach links verschobenen Version der binär:Meine C-Funktion gibt nicht den richtigen Int-zu-Binär-Wert zurück
Enter a base-10 integer: 1234
Enter number of places to shift bit: 8
1234 1421075418
315904 1826920960
Der angegebene Wert und links verschoben Wert ist korrekt, aber die binären Äquivalente sind nicht.
int showbits(int value) {
return (value == 0 || value == 1 ? value : ((value % 2) + 10 * showbits(value/2)));
}
void left_bit_shift() {
int value = get_single_base_10();
int number_shift = get_number_shift();
int bit_value = showbits(value);
int left_shifted_value = value << number_shift;
int left_shifted_bit = showbits(left_shifted_value);
printf("%d %d\n", value, bit_value);
printf("%d %d", left_shifted_value, left_shifted_bit);
}
int get_single_base_10() {
int value;
printf("Enter a base-10 integer: ");
scanf("%d", &value);
return value;
}
int get_number_shift() {
int shift;
printf("Enter number of places to shift bit: ");
scanf("%d", &shift);
return shift;
}
Mögliches Duplikat von [Wie binäre Nummer über printf zu drucken] (http://stackoverflow.com/questions/6373093/how-to-print-binary-number-via-printf) – jdigital
Sie haben uns die tatsächliche Ausgabe gezeigt , aber was ist die * erwartete * Ausgabe? Was sollen 'Showbits' tun? Haben Sie versucht, einen Debugger zu verwenden, um durch den Code zu gehen (wenn Sie das tun, hilft es, den Code lensse kurz zu machen, zum Beispiel indem Sie die "showbits" einzelne Zeile in mehrere Zeilen aufteilen und temporäre Variablen verwenden)? –
Sie meinen, dass Sie für eine gegebene Ganzzahl im Binärformat anzeigen möchten? Dies ist ein Duplikat von [Ein int in binärer Darstellung mit C drucken] (http://stackoverflow.com/questions/1024389/print-an-int-in-binary-representation-using-c) –