トピック
パロピカル extremediamond

&H300ってなんですか?

&H300って何者ですか?また、他にもこの類いの値ってあるんですか? A=Button(0) B=(A And &H300) ってやるとL,Rボタンを入力した時のみButtonの戻り値がBに入るのは分かったんですが…
0そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
正確には、「L,Rのどちらかが押されたら」ですね。 &Hは、それが16進数で記載されている事を表します。 ANDは、2進数での論理積を表します。 BUTTONの戻り値は、  RL YXBA 右左下上 &H300は2進数で  11 0000 0000(空白は意味ナシ。見やすく書いただけ) この2つの「両方が1なら、1を返す」のがANDです。 もしLだけ押されたら、  01 0000 0000(BUTTON()の戻り値)  11 0000 0000(&H300)  ------------  01 0000 0000(BUTTON() AND &H300) なので、結果は「真」(0ではない)となります。
0そうだね
プレイ済み
返信[2]
親投稿
みむ*mim hidemimtp
あ、すみません、「L,Rボタンを入力した時のみButtonの戻り値がBに入る」で正しいです。私の勘違い。 値として見るなら、L,Rだけの入力内容、 論理値として見るなら、どちらかが押されたら真、 です。 両方の見方ができます。
1そうだね
プレイ済み
返信[3]
親投稿
パロピカル extremediamond
なるほど、&H300は16進数で表された768だったんでね。768=256+512なのでLまたはRに振り分けられた値のみ代入されると… ってことは上のソースのANDをORに変えたら、LまたはRが押されたとき、LとRを同時押した時と同じ値が変数Bに代入されるってことですね!
0そうだね
プレイ済み
返信[4]
親投稿
パロピカル extremediamond
あ…その場合はL,Rボタン以外のボタンも受け付けてしまうのか
0そうだね
プレイ済み
返信[5]
親投稿
みむ*mim hidemimtp
ORを取る意味はあまりないですね・・・ L,Rを取るのに&H300だと分かりにくいので、定数リテラルを使用して、 B=A AND (#L OR #R) とか書いたりします。 ORでなく+でも結果は同じですけど、理屈で言うならORです。 これが真なら「どちらかが押さえている」となります。 同時押しかどうかを調べるなら、 B=(A AND (#L OR #R))==(#L OR #R) ですね。書き方は他にもあると思いますが。
0そうだね
プレイ済み
返信[6]
親投稿
ボタンの値に対するORは「自動操縦」とかに応用できます。 BTN=BUTTON() OR #UP こうしますと、常時上を押していることになります。 ORする値をIF文で変化させれば、自動操縦の完成です。
0そうだね
プレイ済み
返信[7]
親投稿
※変数BTNは「ボタンを入れる変数」で、過去ログにおける変数Aに相当します。
0そうだね
プレイ済み
返信[8]
親投稿
パロピカル extremediamond
なるほど、僕は論理演算子を不等式の範囲を求める位にしか使わなかったのですが、かなり使い道があったんですね。あと、定数リテラルで扱える値は極力利用しようと思います。 みむさん、あまさと しおんさんありがとうございました。
1そうだね
プレイ済み