奇数を求める関数

解決


ウフィ  2007-09-02 00:48:44  No: 66172

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


へろり  2007-09-02 01:59:25  No: 66173

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


ウフィ  2007-09-02 03:39:21  No: 66174

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


wclrp ( 'o')  2007-09-02 05:54:14  No: 66175

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

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


ウフィ  2007-09-02 11:48:36  No: 66176

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

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


Blue  2007-09-02 12:01:27  No: 66177

> ?が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-03 01:36:04  No: 66178

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


ウフィ  2007-09-03 03:11:00  No: 66179

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


救済者  2007-09-03 05:30:15  No: 66180

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加