C言語なら俺に聞け(入門篇) Part 21at TECHC言語なら俺に聞け(入門篇) Part 21 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト450:デフォルトの名無しさん 07/11/18 08:30:08 int f(unsigned A, int B) { return !(A >> B); } 451:デフォルトの名無しさん 07/11/18 08:38:36 bool func(unsigned A, unsigned B) {return A >= (1 << B);} 452:デフォルトの名無しさん 07/11/18 08:44:45 後出しなのに・・・ 453:デフォルトの名無しさん 07/11/18 09:15:50 すみません、まだC初めて一週間足らずの初心者ですが質問させてください。 課題で void printIPAddress( unsigned int address ) { printf("%d.%d.%d.%d", (address & 『 ① 』 ) >> 24, (address & 『 ② 』 ) >> 16, (address & 『 ③ 』 ) >> 8, (address & 『 ④ 』 )); } ア.0x000000ff イ.0x0000ff00 ウ.0x00ff0000 エ.0xff000000 とありまして、①~④にア~エから適切なものを選択して関数を完成させるというものです。 ネットなどで色々検索して、答はたぶん①:エ ②:ウ ③:イ ④:アじゃないかと思ってるのですが どうしてそれが正解?なのかがわかりません。(そもそも正解かどうかすらわかりません) 考え方としては例えば①:エなら0xff000000は11111111 00000000 00000000 00000000で >>24というのが右に24bit(3byte)移動するという意味なんだろうか?と思ってるんですが 3byte移動したら11111111が一番→にきて後ろについてたたくさんの0は前に行くんでしょうか? それがどうして正解?なんでしょうか?他のもの(例えば0x000000ffとか)が入ってはいけないんでしょうか? &を使ってるという事は論理積を理解できてないとこの問題は理解できないんだと思うのですが 本や解説を見てる時はふんふんなるほどと思っても実際こうやって問題にされると全くわからなくてお手上げです… 長文すみませんがどなたかご教授お願いします。 もしスレチならどこか該当スレに誘導お願いします。 (最初ふらっとCスレに書き込もうとしたら1000スレ達成しちゃってました…) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch