« [奮闘記]配列を使って星の動きを制御するのだ | トップページ | [奮闘記]ちゃんと自機がカーソルに従って動いた理由の解析 »

[奮闘記]数式ってのはこういうものなのだ

今回・次回の解説には、OXさん・ToYさん・MIAさん・Ma_Tsさんなどの多大なご協力を頂きました。この場を借りて御礼申し上げます。深謝。

じゃぁ、マニュアルの「数式」のとこに書いてある順番に見てきましょう。なんかそのうち中学・高校で使ってた数学の教科書引っ張り出さなきゃいけなくなりそうだな^^;



10進整数 -2147483647  ~  2147483647
16進整数 $0  ~  $FFFFFFFF
2進整数 %0  ~  %111111...

10進数字→2進数字とか、16進数字→10進数字を暗算でやれって言われると「ごめんなさい」なんだけど、まぁ意味はわかる。要はこういうことでしょ?

2進法 10進法 16進法
%1 1 $1
%101101 45 $2D
%1110011 115 $72
%11111111 255 $FF

Windowsに標準で入ってる「電卓」を使いました。プログラマに関数電卓が必須だっての、よくわかるね・・・こんなの手計算じゃやっとれん^^;



文字コード(1バイト) 'A'

最初意味がよくわからんかったのだけど、やってみて納得。それぞれの文字が持ってるコード番号ってのがあって、それがそのまま入るらしい。例えば 'a'=97 、 'A'=65 っていう感じ。全角文字は調べられないのかな~と思ったら、できちゃった。 'あ'=-126 だった。入力した文字を調べて何か計算する(占いとか暗号とかに使えるかな?)ような使い方ができるのかな?



加減乗除算 + - * /

これは特に問題なし。ところでこれはHSPの特殊な仕様らしいんだけど、計算式は常に左から順番に処理されるん だって。乗除算の優先は無いそうな。優先させたかったら()をつけるってのは同じらしいんだけど。例えば「A=1+5*2」は「A=12」と同じ。数学的 に正しく計算すれば「A=11」だもんね。そういうふうにしたかったら「A=1+(5*2)」というような感じで記述しなきゃいけないそうだ。



論理演算(and) &
論理演算(or) |
論理演算(xor) ^

今まで一番わからなかった部分。要は2進法で考えなきゃいけないそうだ。

例1: 12&20
12 %01100
20 %10100
結果 %00100

ってことで、結果は「4」になる。これが信じられない人は、スクリプトエディタで下のように書いてみてくだされ。F5を押すと「4」と表示されるはずだぁ。


PRINT 12&20
STOP

つまり、「and」の計算は、2進法に直して、同じ位置のどちらにも「1」があれば、「1」になるということ。「論理積」と言うそうな。縦に見るとわかりやすいね。

例2: 12|20
12 %01100
20 %10100
結果 %11100

今度の結果は「28」。信じられない人は、上のプログラムの「&」を「|」に書き換えてF5を押してみなはれ。「or」の計算は、2進法に直して、同じ位置のどちらかに「1」があれば「1」になると。「論理和」と言うそうな。

例3: 12^20
12 %01100
20 %10100
結果 %11000

今度の結果は「24」。同じ位置の数字が違ったら結果は「1」になるそうな。「排他的論理和(xor)」と言って、あまり見かけないけど暗号化なんかに使えるらしい。

彼ら(笑)の使い道ってすぐには思いつかないんだけど、元々CPUの根っこでは2進法で計算してるんだから、人間様は苦労するけどコンピュータだと処理が速くなるそうな。得意な方法でやらせてあげましょうってことだね・・・。



割り算の余り \

こいつは簡単。例えば 4\3=1って感じだね。ただし、何に使うのかは見当がつかん^^;



条件式(同じ) =
条件式(小さい) <
条件式(以下) <=
条件式(以上) >=
条件式(大きい) >
条件式(≠) !

これらはほとんどIF文で使うやつだね。「IF x>600 : x=600」っていう感じだな。



左方向へビットシフト <<
右方向へビットシフト >>

これはマジで、きちんと勉強した人じゃなきゃわかんないよぉ。要は、「2のn乗を掛ける」ということらしい。左とか右ってなんのこっちゃ?って思ってたんだけど、要は2進法で考えるらしい。

例1: 50>>1
50 %00110010
結果 %00011001

これは「 50×2-1 」ということになるから、「 50/2 」と結果は同じ。2進法に直すと、見事に右側にずれてる。これも論理演算と同様、2進法で人間様は苦労するけどコンピュータは楽チンになるそうな。

例2: 50<<2
50 %00110010
結果 %11001000

これは「 50×22 」だから、「 50*4 」と結果は同じ。2進法で考えると、今度は左に2つずれてるのがわかるでしょ?


さぁここまで来れば、あの謎の2行の意味がわかってくるぞぉ。解析は次回。

« [奮闘記]配列を使って星の動きを制御するのだ | トップページ | [奮闘記]ちゃんと自機がカーソルに従って動いた理由の解析 »

1.奮闘記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445599

この記事へのトラックバック一覧です: [奮闘記]数式ってのはこういうものなのだ:

« [奮闘記]配列を使って星の動きを制御するのだ | トップページ | [奮闘記]ちゃんと自機がカーソルに従って動いた理由の解析 »