0
与えられた整数の2進数を返す関数を作成しようとしています。私のC関数が正しいint-to-binary値を返さない
Enter a base-10 integer: 1234
Enter number of places to shift bit: 8
1234 1421075418
315904 1826920960
所定の値と左シフト値が正確であるが、バイナリ等価物:1234のテスト入力が与えられたとき、それは与えられた入力の両方のバイナリと左シフトされたバージョンのバイナリの誤った値を返しますそうではありません。
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;
}
[printfを使用してバイナリ番号を印刷する方法](0120-18753)をご覧ください。 – jdigital
実際の出力を表示しました。予想される*出力は何ですか? 'ショービット'とは何でしょうか?デバッガを使ってコードをステップ実行しようとしたことがあります(例えば、 'showbits'の単一行を複数の行に分割し、一時変数を使用するなどして、コードを簡潔にするのに役立ちます)。 –
あなたは、指定された整数に対してバイナリで表示することを意味しますか?これは[Cを使ってバイナリ表現でintを出力する]の複製です(http://stackoverflow.com/questions/1024389/print-an-int-in-binary-representation-using-c) –