整数を入力し,それを10進,16進(8桁),8進(11桁)で,
次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ
ット処理を行うこと。繰返し文を用いることにより,幾つかのデータで実行を
確認してみよ。
12 0000000C 000000000014
-1 FFFFFFFF 37777777777
宿題がわかりません(;△;)
Re:宿題がわかりません(;△;)
今までにビット演算を行うコードを書いたことがありますか?
int a = 0xdc;
printf("%x\n", a & 0x01);
printf("%x\n", a & 0x02);
printf("%x\n", a & 0x04);
printf("%x\n", a & 0x08);
printf("%x\n", a & 0x10);
printf("%x\n", a & 0x20);
printf("%x\n", a & 0x40);
printf("%x\n", a & 0x80);
これがビット演算の一部ですが、
上記コードがどういう結果になるか分かりますか?
分からなければ実際に実行して動作を確認してみてください。
int a = 0xdc;
printf("%x\n", a & 0x01);
printf("%x\n", a & 0x02);
printf("%x\n", a & 0x04);
printf("%x\n", a & 0x08);
printf("%x\n", a & 0x10);
printf("%x\n", a & 0x20);
printf("%x\n", a & 0x40);
printf("%x\n", a & 0x80);
これがビット演算の一部ですが、
上記コードがどういう結果になるか分かりますか?
分からなければ実際に実行して動作を確認してみてください。
Re:宿題がわかりません(;△;)
> 次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ
> ット処理を行うこと。
今回必要な「ビット処理」って何でしょうね?
出題者が何をイメージしているのか、今ひとつピンとこないです。
printfの書式文字列を工夫すれば、仕様を満たすように出力できますが…。
> ット処理を行うこと。
今回必要な「ビット処理」って何でしょうね?
出題者が何をイメージしているのか、今ひとつピンとこないです。
printfの書式文字列を工夫すれば、仕様を満たすように出力できますが…。
Re:宿題がわかりません(;△;)
>>boxさん
多分、ビット演算の練習じゃないでしょうか?
実際、あゆみさんはビット演算についてよく分かっていないようですし…
その為、わざと繰り返し文を使うように明記しているのだと思います。
多分、ビット演算の練習じゃないでしょうか?
実際、あゆみさんはビット演算についてよく分かっていないようですし…
その為、わざと繰り返し文を使うように明記しているのだと思います。
Re:宿題がわかりません(;△;)
最初の投稿にあった出力例を見ると、
12も-1も、ビット演算を行なわない状態で
そのまま16進・8進出力していますね。
繰り返し文を使うのは、いくつかのデータ(例:-1~12)で
結果を確認するためだと、問題文を読み取りました。
というわけで、ビット演算がどうからんでくるのか、
未だにわかっていない状態です。
12も-1も、ビット演算を行なわない状態で
そのまま16進・8進出力していますね。
繰り返し文を使うのは、いくつかのデータ(例:-1~12)で
結果を確認するためだと、問題文を読み取りました。
というわけで、ビット演算がどうからんでくるのか、
未だにわかっていない状態です。
Re:宿題がわかりません(;△;)
すみません、質問した方と関係ないんですけど、見てて、疑問に思ったので教えてください。
int a = 0xdc;
printf("%x\n", a );
printf("%x\n", a & 0x01);
printf("%x\n", a & 0x02);
printf("%x\n", a & 0x04);
printf("%x\n", a & 0x08);
printf("%x\n", a & 0x10);
printf("%x\n", a & 0x20);
printf("%x\n", a & 0x40);
printf("%x\n", a & 0x80);
これを実行すると
dc
0
0
4
8
10
0
40
80
こうなったのですが、これはどういう意味なのでしょうか?
int a = 0xdc;
printf("%x\n", a );
printf("%x\n", a & 0x01);
printf("%x\n", a & 0x02);
printf("%x\n", a & 0x04);
printf("%x\n", a & 0x08);
printf("%x\n", a & 0x10);
printf("%x\n", a & 0x20);
printf("%x\n", a & 0x40);
printf("%x\n", a & 0x80);
これを実行すると
dc
0
0
4
8
10
0
40
80
こうなったのですが、これはどういう意味なのでしょうか?
Re:宿題がわかりません(;△;)
まず、ビット演算について、、、、文字で説明するより、
こちらにわかりやすく書かれています。
本当に最初っから書いてありますので、ここで意味を掴んでみてください。
http://www9.plala.or.jp/sgwr-t/c/sec14.html
こちらにわかりやすく書かれています。
本当に最初っから書いてありますので、ここで意味を掴んでみてください。
http://www9.plala.or.jp/sgwr-t/c/sec14.html
Re:宿題がわかりません(;△;)
>binjoさん & はビットごとのANDをとります。 0xdc 11011100 & 0x01 00000001 ---------------- 00000000 (=0x00) 0xdc 11011100 & 0x02 00000010 ---------------- 00000000 (=0x00) 0xdc 11011100 & 0x04 00000100 ---------------- 00000100 (=0x04) 0xdc 11011100 & 0x08 00001000 ---------------- 00001000 (=0x08) 0xdc 11011100 & 0x10 00010000 ---------------- 00010000 (=0x10) 0xdc 11011100 & 0x20 00100000 ---------------- 00000000 (=0x00) 0xdc 11011100 & 0x40 01000000 ---------------- 01000000 (=0x40) 0xdc 11011100 & 0x80 10000000 ---------------- 10000000 (=0x80)