する』という内容をコラムの1と2で紹介しました。7今回は奇数偶数判定をネタとして紹介します。プログラムの入門書に書いてる数学的な記述だけではなく、ビットマスクで別の書き方ができる、というネタですが、2進数に置き換えて考えるとこういう書き方もあるという話を紹介しているだけなので、すでに知っている人は特に読まれる必要はないかと思います。1」で偶数は「2n」、授業ではその証明方法とかを勉強したのではないかと思ったりします。式の意味は、奇数は2で割り切れない、偶数は2で割り切れる。プログラムで奇数・偶数判定する時は、2で割って、余りがあるかどうかを数学で習ったままに書いたりするかと思います。if(x%2!==0){//余りが0でないので、奇数の場合の処理}else{//余りが0なので、偶数の場合の処理}又はif(x%2===0){//余りが0なので、偶数の場合の処理}else{//余りが0でないので、奇数の場合の処理}プログラムのテクニックとして、0は偽、0以外の数値は真プログラマは基本的にめんどくさがりなのでプログラムを短く書こうとしたり、効率的な処理記述を目指す人が多いかと思います。if(x%2!==0)という部分は、「余りを求める処理」と「その結果が0かどうかを判定する処理」の二つをやっている点について、以下のように書いて処理を単純にしたりする場合があるかと思います。ifの条件式の結果が偽なので、偶数の場合の処理}これはif判定部分で、0は偽、0以外の数値は真となっているルールを利用した書き方になります。奇数0は0なので、偶数とするのかどうかは数学的な話ですが、プログラムでやろうとする処理によって、どうするかが変化する話かと思いますので、とりあえず今回の紹介では偶数側にしておきます。2進数にした時の縦の並びを眺めるだけで、勘のいい人は前回記事と合わせて答えが見えてくるのではないかと思ったりします。ヒントはビットマスクです。奇数だけを縦に眺めてみてください。奇数2進数の1桁目に注目すると、偶数は0、奇数は1になっています。奇数と偶数が交互に並ぶのは一般的な知識かと思います。1、という数値になるのですが、2の0乗以外は、2の掛け算でできている値なので、偶数になります。偶数にしかなりません。いうことで、2進数の1桁目が0の場合は偶数、2進数の1桁目が1の場合は奇数だと判定できる、ということになります。1桁目のビットマスクで&する2進数の1桁目が0の場合は偶数、1の場合は奇数だと判定できる、とわかりましたので、前回のビットマスクと&する話が使える、ということになります。ifの条件式の結果が偽なので、偶数の場合の処理}前回参照したwikipediaさんの記事でも書いてあったように、掛け算・割り算などよりも、ビット演算の方が処理が軽い、ということなので、プログラム中に大量にこういう判定がある場合はビット演算した方が全体の処理としては軽くなる、かと思います。豆知識:10進数を2進数に変換(と奇数と偶数の関係)について2進数ですべての正の整数を表現して計算しているのですが、2進数の1桁目以外の桁は2の階乗の値なので、2進数の各桁だけが1の数値(=ビットマスク)は1桁目以外はすべて偶数、ということになります。奇数、ということになります。10進数を2進数に変換する時の計算方法は、順番に2で割ってゆき、余りがあれば1、なければ0を後ろから並べ、商が1になったら頭に付加する、というのを習ったりします。計算することもできます。奇数と習い、2進数に変換して考えてみると、1桁目が0なら偶数、1なら奇数という数字の特徴から、x&1が真なら奇数、偽なら偶数というプログラムでの使い方を紹介しました。コンピュータは計算処理しているだけです。前回の2進数を旗が立つとか、複数を選択している、のように別の意味を人間が考えて、その計算結果を後のプログラムで意味づけするように、今回の2進数1桁目のビットマスクで&演算した結果に、奇数偶数判定に使うという意味を与えるようにプログラムの処理を書くことで、単なる計算がアイデアになる、これが今回紹介したお話のテーマです。ネット検索すると今回紹介したような説明がないまま、とりあえず、奇数偶数判定はそう書く、みんながそう書いてるからそう書け的な、記事があったりしましたので、2進数とビット演算の活用ネタをテーマとしている今回の記事に取り上げてみました。『片手で31カウントの理由を理解すると、両手で1023カウントを説明できるようになる』(記事1の内容)2進数の基本活用方法が理解できると「パーミッション設定」の意味もわかるようになります。『複数の選択状態を示す10進数値から情報を取り出す時はビットマスクで[&](ビットごとのAND)を使ってビット演算する』(記事2の内容)2進数の[111]は10進数の[7]。単なるビット演算それに、人間がその計算結果を奇数偶数判定として使うという意味を与えることで、単なる計算がアイデアになる』(記事3の内容)原森IT研の考察結果紹介。