ページ 11

宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 10:48
by あゆみ
整数を入力し,それを10進,16進(8桁),8進(11桁)で,
次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ
ット処理を行うこと。繰返し文を用いることにより,幾つかのデータで実行を
確認してみよ。
12 0000000C 000000000014
-1 FFFFFFFF 37777777777

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 11:02
by keichan
まず、どこがわからないのかを考えてください。

ビット演算については?
繰り返し文については?

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 11:25
by あゆみ
ビット処理の意味がわかりません(^_^;)

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 11:54
by keichan
今までにビット演算を行うコードを書いたことがありますか?

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:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 14:39
by box
> 次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ
> ット処理を行うこと。

今回必要な「ビット処理」って何でしょうね?
出題者が何をイメージしているのか、今ひとつピンとこないです。
printfの書式文字列を工夫すれば、仕様を満たすように出力できますが…。

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 14:50
by バグ
>>boxさん
多分、ビット演算の練習じゃないでしょうか?
実際、あゆみさんはビット演算についてよく分かっていないようですし…
その為、わざと繰り返し文を使うように明記しているのだと思います。

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 15:16
by box
最初の投稿にあった出力例を見ると、
12も-1も、ビット演算を行なわない状態で
そのまま16進・8進出力していますね。

繰り返し文を使うのは、いくつかのデータ(例:-1~12)で
結果を確認するためだと、問題文を読み取りました。

というわけで、ビット演算がどうからんでくるのか、
未だにわかっていない状態です。

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 16:52
by フリオ
 
 文字列にして表示するのでしょうか。
それなら,ビット演算を使ってできますが。
 

Re:宿題がわかりません(;△;)

Posted: 2007年1月24日(水) 17:21
by フリオ
 
 それとも、16進表記と8進表記を1桁ずつ処理していくのでしょうか。
 

Re:宿題がわかりません(;△;)

Posted: 2007年1月25日(木) 04:31
by binjo
すみません、質問した方と関係ないんですけど、見てて、疑問に思ったので教えてください。

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:宿題がわかりません(;△;)

Posted: 2007年1月25日(木) 05:07
by 管理人
まず、ビット演算について、、、、文字で説明するより、
こちらにわかりやすく書かれています。

本当に最初っから書いてありますので、ここで意味を掴んでみてください。

http://www9.plala.or.jp/sgwr-t/c/sec14.html

Re:宿題がわかりません(;△;)

Posted: 2007年1月25日(木) 10:54
by box
>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)