3

ある記数法を他の記数法に変換するプログラムを作成する必要があります。Windows (Dev C++) で itoa を使用しましたが、唯一の問題は、2 進数を他の数値システムに変換する方法がわからないことです。他のすべての数値システムの変換は、それに応じて機能します。これには、% を使用して変換される入力を保存するようなものが含まれますか?

ここに私の仕事のスニペットがあります:

case 2:
        {
            printf("\nEnter a binary number: ");
            scanf("%d", &num);
            itoa(num,buffer,8);
            printf("\nOctal        %s",buffer);
            itoa(num,buffer,10);
            printf("\nDecimal      %s",buffer);
            itoa(num,buffer,16);
            printf("\nHexadecimal  %s \n",buffer);
            break;
        }

10 進数には %d を使用し、8 進数には %o を使用し、16 進数には %x を使用しました。バイナリの正しいものは何ですか? 将来の答えをありがとう!

4

1 に答える 1

0

その数値は、メモリ内にバイナリ形式で既にあります。これらの %d、%o、および %x は、printf のような関数が引数を解釈し、10 進数/8 進数/16 進数表現の間で変換する方法を知るためのヒントです。printf にはバイナリ形式はありません。代わりに、次のように、すべての個々のビットを反復処理できます。

for(int i = 0; i < sizeof(num)*8; i++)
{
    printf("%u", !!(byte & (1 << i)));
}
printf("\n");

これにより、左から始まるバイトのすべてのビットが出力されます。

于 2013-01-28T23:42:04.217 に答える