- PR -

奇数、偶数の判断の方法

投稿者投稿内容
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 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/07/07
投稿数: 98
お住まい・勤務地: 岡山県
投稿日時: 2003-11-28 15:24
>実際にやってみればわかりますが、1%2 は 1 ですよ。

そうですよね。
失礼しました
taka
常連さん
会議室デビュー日: 2003/09/22
投稿数: 46
投稿日時: 2003-11-28 16:38
皆さん、沢山のご意見ありがとうございました。

インギさんから教えていただいた下記の文で上手くいきました。
if((i & 1) == 0){
//偶数
}else{
//奇数
}

かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-11-28 16:51
#すんません。投稿先間違えました。

[ メッセージ編集済み 編集者: かずくん 編集日時 2003-11-28 16:54 ]
toppo
ベテラン
会議室デビュー日: 2003/10/28
投稿数: 89
お住まい・勤務地: 東京・池袋
投稿日時: 2003-12-02 16:46
引用:

takaさんの書き込み (2003-11-28 16:38) より:
皆さん、沢山のご意見ありがとうございました。

インギさんから教えていただいた下記の文で上手くいきました。
if((i & 1) == 0){
//偶数
}else{
//奇数
}



ところで、

if((i % 2 == 0) && (i != 0)) {
 偶数
} else {
 奇数
}
でi=1(奇数)の時に判定が偶数になってしまうのは
どういう環境ですか?
何かの間違いですよね。
間違いでないなら、どんな状況でそうなったのか
知りたいです。

[ メッセージ編集済み 編集者: toppo 編集日時 2003-12-02 16:48 ]

[ メッセージ編集済み 編集者: toppo 編集日時 2003-12-02 16:50 ]
taka
常連さん
会議室デビュー日: 2003/09/22
投稿数: 46
投稿日時: 2003-12-02 17:38
引用:

toppoさんの書き込み (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 ]



ハイ、何かの間違いだと思われます。
うーん自分でも今試してみて"i=1"の時に偶数判定にはなりません・・・
いらぬ所でご迷惑かけましたね。
すみませんでした。
ボム
ベテラン
会議室デビュー日: 2003/07/25
投稿数: 61
投稿日時: 2003-12-05 11:16
終わったスレッドで申し訳ないのですが、

なぜ
if((i & 1) == 0){
//偶数
}else{
//奇数
}

で、奇数、偶数が分かれるのかがわかりません。
(i & 1)とはどのような意味なんでしょうか?
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 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 ]

スキルアップ/キャリアアップ(JOB@IT)