奇数を求める関数

解決


ウフィ  2007-09-01 15:48:44  No: 66172  IP: 192.*.*.*

奇数だったらtrueを返すような関数なかったでしょうか?
どなたかご存知ないですか?

編集 削除
へろり  2007-09-01 16:59:25  No: 66173  IP: 192.*.*.*

2で割ったあまりを求めればいいだけでは?

編集 削除
ウフィ  2007-09-01 18:39:21  No: 66174  IP: 192.*.*.*

どうやったらいいですかね?
コードで表すとどのようになりますか?

編集 削除
wclrp ( 'o')  2007-09-01 20:54:14  No: 66175  IP: 192.*.*.*

int型限定ならたぶん簡単すぎて関数使わない・作らない。

bool isOdd(int x)
{
    return (x & 1) ? true : false;
}

編集 削除
ウフィ  2007-09-02 02:48:36  No: 66176  IP: 192.*.*.*

wclrp ( 'o')さん
ありがとうございます。
> return (x & 1) ? true : false;
これのコードの意味ですが
?がifの代わりでしたっけ?
そうであればtrue
そうでなければfalseで解釈はいいのですか?

いちばん問題なのは
引数xと1という判断でなぜ奇数かどうかわかるのか
なぞなんですが?
ここのところの解説をお願いしたいんですが?

編集 削除
Blue  2007-09-02 03:01:27  No: 66177  IP: 192.*.*.*

> ?がifの代わりでしたっけ?
> そうであればtrue
> そうでなければfalseで解釈はいいのですか?参考演算子です。
その解釈でOKです。

> いちばん問題なのは
> 引数xと1という判断でなぜ奇数かどうかわかるのか
> なぞなんですが?
ビット演算です。
http://mail2.nara-edu.ac.jp/~asait/operation.htm
とか
http://www5c.biglobe.ne.jp/~ecb/c/05_04.html
を参考にしてみてください。

編集 削除
επιστημη  URL  2007-09-02 16:36:04  No: 66178  IP: 192.*.*.*

x = xの第0bit + xの第1bitx2 + xの第2bitx4 + ...
であり、上式の二項以降はすべて偶数。
なのでxの奇偶は第0bitの0/1を判定すればいい。

編集 削除
ウフィ  2007-09-02 18:11:00  No: 66179  IP: 192.*.*.*

ありがとうございます!
ご返信してくださって。
ちょっとビット演算については苦手なんで
折をみて機会があれば勉強したいと思います。
では、失礼します。

編集 削除
救済者  2007-09-02 20:30:15  No: 66180  IP: 192.*.*.*

どう見ても初心者なんだから、こう教えてあげればいいでしょうに…

bool isOdd(int x)
{
    if(x%2==1){
      return true;
    }else{
      return false;
    }
}

編集 削除