- - PR -
奇数、偶数の判断の方法
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-11-28 14:52
Emacs信者さんが既に言われてますが、一応。
http://jiten.www.infoseek.co.jp/Kokugo?qt=%B6%F6%BF%F4&sm=1&pg=result_k.html&col=KO [追記] 被ってしまった... よく被ります、自分 [ メッセージ編集済み 編集者: ぽん 編集日時 2003-11-28 14:53 ] | ||||
|
投稿日時: 2003-11-28 15:24
>実際にやってみればわかりますが、1%2 は 1 ですよ。
そうですよね。 失礼しました | ||||
|
投稿日時: 2003-11-28 16:38
皆さん、沢山のご意見ありがとうございました。
インギさんから教えていただいた下記の文で上手くいきました。 if((i & 1) == 0){ //偶数 }else{ //奇数 } | ||||
|
投稿日時: 2003-11-28 16:51
#すんません。投稿先間違えました。[ メッセージ編集済み 編集者: かずくん 編集日時 2003-11-28 16:54 ] | ||||
|
投稿日時: 2003-12-02 16:46
ところで、 if((i % 2 == 0) && (i != 0)) { 偶数 } else { 奇数 } でi=1(奇数)の時に判定が偶数になってしまうのは どういう環境ですか? 何かの間違いですよね。 間違いでないなら、どんな状況でそうなったのか 知りたいです。 [ メッセージ編集済み 編集者: toppo 編集日時 2003-12-02 16:48 ] [ メッセージ編集済み 編集者: toppo 編集日時 2003-12-02 16:50 ] | ||||
|
投稿日時: 2003-12-02 17:38
ハイ、何かの間違いだと思われます。 うーん自分でも今試してみて"i=1"の時に偶数判定にはなりません・・・ いらぬ所でご迷惑かけましたね。 すみませんでした。 | ||||
|
投稿日時: 2003-12-05 11:16
終わったスレッドで申し訳ないのですが、
なぜ if((i & 1) == 0){ //偶数 }else{ //奇数 } で、奇数、偶数が分かれるのかがわかりません。 (i & 1)とはどのような意味なんでしょうか? | ||||
|
投稿日時: 2003-12-05 11:31
大事な事 1
&はビットオペレータです。二進法でANDの役目をします。 0 & 0 -> 0 0 & 1 -> 0 1 & 0 -> 0 1 & 1 -> 1 となります。たとえば 11101 &01011 -------- 01001 になります。大事なのは0をANDさせると必ず0になることです。 大事な事 2 二進法で表記する場合、i が偶数であれば最後のビットは必ず0です。奇数であれば必ず1です。 10進法 -> 二進法 0 -> 00 1 -> 01 2 -> 10 3 -> 11 4 -> 100 5 -> 101 6 -> 110 大事な事 3 "i & 1" というのは i AND 00000000000000000000000000000001 としていることになり、これをすることで最後のビット以外は必ず0になってしまいます。つまり、i&1 は必ず0か1になります。0か1になるかどうかはiの最後のビットによります。最後のビットが1であれば1を返し、最後のビットが0であれば0になります。i&1で最後のビットが分かるので 大事な事 2のルールを使って、iが奇数か偶数か分かります。 例) i が 4 の場合 00000000000000000000000000000100 (2進法で4) &00000000000000000000000000000001 ('& 1') ------------------------------------ 00000000000000000000000000000000 => 0になるから偶数 i が 9 の場合 00000000000000000000000000001001 (2進法で9) &00000000000000000000000000000001 ('& 1') ------------------------------------ 00000000000000000000000000000001 => 1になるから奇数 [ メッセージ編集済み 編集者: H2 編集日時 2003-12-05 11:41 ] | ||||
