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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あゆみ

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

#1

投稿記事 by あゆみ » 12年前

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

keichan

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

#2

投稿記事 by keichan » 12年前

まず、どこがわからないのかを考えてください。

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

あゆみ

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

#3

投稿記事 by あゆみ » 12年前

ビット処理の意味がわかりません(^_^;)

keichan

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

#4

投稿記事 by keichan » 12年前

今までにビット演算を行うコードを書いたことがありますか?

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);

これがビット演算の一部ですが、
上記コードがどういう結果になるか分かりますか?
分からなければ実際に実行して動作を確認してみてください。

box

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

#5

投稿記事 by box » 12年前

> 次のように並べて表示するプログラムを作成せよ。16進,8進についてはビ
> ット処理を行うこと。

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

バグ

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

#6

投稿記事 by バグ » 12年前

>>boxさん
多分、ビット演算の練習じゃないでしょうか?
実際、あゆみさんはビット演算についてよく分かっていないようですし…
その為、わざと繰り返し文を使うように明記しているのだと思います。

box

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

#7

投稿記事 by box » 12年前

最初の投稿にあった出力例を見ると、
12も-1も、ビット演算を行なわない状態で
そのまま16進・8進出力していますね。

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

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

フリオ

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

#8

投稿記事 by フリオ » 12年前

 
 文字列にして表示するのでしょうか。
それなら,ビット演算を使ってできますが。
 

フリオ

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

#9

投稿記事 by フリオ » 12年前

 
 それとも、16進表記と8進表記を1桁ずつ処理していくのでしょうか。
 

binjo

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

#10

投稿記事 by binjo » 12年前

すみません、質問した方と関係ないんですけど、見てて、疑問に思ったので教えてください。

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

#11

投稿記事 by 管理人 » 12年前

まず、ビット演算について、、、、文字で説明するより、
こちらにわかりやすく書かれています。

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

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

box

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

#12

投稿記事 by box » 12年前

>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)

閉鎖

“C言語何でも質問掲示板” へ戻る