10 進値が 65 の定数を C で次のように記述する方法を示します。
a. 16 進定数
b. 8 進定数 (C)
65/16 = 1 r1
1/16 = 0 r1
Hexadecimal constant = 11
65/8 = 8 r1
8/8 = 1 r0
1/8 = 0 r1
Octal constant = 101
これは C で定数を変換する正しい方法ですか?
この方法は、結果が底より小さくなるまで底で割ることです。
したがって、65/8 は 8 r1 を返しますが、結果は 8未満ではないため、そこで停止しません。
また8で割ると1になる
そのはず
65/64 = 10 r 1 ここで、64 = 8x8 = 8 進数の 10
余計なことは言ってないと思う
while ループと文字列が必要なだけです。これは宿題なので、これ以上言う必要はないと思います。
質問を誤解しているのかもしれませんが、10 進数を 16 進数と 10 進数に変換するアルゴリズムを実装する方法ではなく、16 進数と 10 進数の定数が C でどのように表現されるかを尋ねられているようです。
その場合:
16 進数は、先行する 0x または 0X によって表されます。
8 進数は、先行する 0 によって表されます
int hex = 0x41;
int oct = 0101;
もちろん、値を 10 進数で出力することでこれを確認できます。
printf("%d\n", hex);
printf("%d\n", oct);