トピック
受付中
ヨシヒロ yoshihiro77

最近はじめました

公式ガイドブックがわかりにくいので教えてくだたい。 ガイドブック37ページ、ボタン入力の説明文ですが7行目 IF (BU AND 15)==0 THEN @NYURYOKU とあるのですが、ここの”15”とはどのような意味ですか? 13や14では実際うまく動きません。 15である意味を教えてください。
3そうだね
プレイ済み
返信[1]
親投稿
Soybeanman 2013niconico
ボタンの当てはめられてる数を合わせた数(上+下+右+左)が15※なんです。 14だと(下+右+左)になります。 分かりにくいですよね… ※上は1 下は2 右は4 左は8です。
2そうだね
プレイ済み
返信[2]
親投稿
ぴくと kanau1203
15は2進数で1111だからでは?
2そうだね
プレイ済み
返信[3]
親投稿
ぴくとさんと同じですがand演算だとBU AND 15(1111)だからじゃないでしょうか
2そうだね
プレイ済み
返信[4]
親投稿
うーん、すこしわかりずらいですかね。 BUTTON命令は入力されたボタンによって対応した数字が代入されます ↑は1,、↓は2、←は4、→は8、Aは16、Bは32…以下略 それぞれ二進数に直すと 1=1,2=10.4=100,8=1000,16=10000,32=100000 AND演算は二つの数値の値の両方が1の場合、その桁に1が入ります。 例えば 2(↓ボタン) と 15 なら二進数に直すと 10 AND 1111 で0010になり、2が入力されます。 すなわち、右ボタンを押した場合、(BU AND 15)には、2が代入されます。 十字キー全部でも同じです。 しかしAボタン(10000)だと 10000 AND 1111で0になり0が代入されます。 つまり十字キー以外の入力は0に、十字キーは対応した数値を代入します。 分かりにくかったら言ってください。補足します
3そうだね
プレイ済み
返信[5]
親投稿
ボタン数字のお約束があるんですね 上 1、これはちょっと特別 下 2、ここからお約束が発動します 左 4、2*2=4だね 下 8、4*2=8 A 16、8*2=16 B、32、16*2=32 そう、ボタンごとの数字は「2を何回か掛けた数」なんです。
3そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
2進数とANDを理解していると解りやすいのですが…。 ボタンが押されると以下のような値がそれぞれ返ってきます。 2進数 10進数 十字キー 1000  8   ↑ 0100  4   ↓ 0010  2   ← 0001  1   → 15は以下の通り 1111  8+4+2+1=15 ANDすると同じ位置が1のところだけのこります。 何も押されていない場合は0、↓の場合は0100となり4の結果となります。よって15でANDすると↑↓←→のどれかが押されると0でない値となります。 14の場合は以下の様になるので→が押されても0000となり、 1110  8+4+2+0=14 13の場合は以下の様になるので←が押されても0000 1101  8+4+0+1=13 よって上手く動きません。
3そうだね
プレイ済み
返信[7]
親投稿
(7行目の存在意義は薄いなんて言わなくはない)
0そうだね
プレイ済み
返信[8]
親投稿
ヨシヒロ yoshihiro77
みなさまありがとうございます。 15の意味の前にANDを知る必要があったようです。 IF (BU AND 15)==0 THEN の意味としては”何も入力が無いから0000である”、”入力があった場合0000でなくなるためにIFが成立しない”ということですね。
1そうだね
プレイ済み
返信[9]
親投稿
ヨシヒロ yoshihiro77
簡易ですがボタン入力テストプログラム組んでみました。きちんと動いてくれて感激です。 そしてボタンの番号がなぜ倍数なのかやっと理解しました。 少しずつですが頑張って行きます。
1そうだね
プレイ済み
返信[10]
親投稿
Godot orz_127
すみません 自分の説明の方で「なにも」と書いてしまったせいだと思いますが^^; 「AND 15」には受け付けるボタンを制限する意図があります。 例えばボタンAは、16なので2進数で「10000」、15は「01111」なので、ANDすると0になります。 ボタンAが押されてもなかったことにして「@NYURYOKU」に戻ります。 「AND 15」は十字キーの↑↓←→のみを有効として、↑↓←→の何れの入力がなければ0となります。 なので「何も入力がない」と言うより、「↑↓←→の何れの入力もない」と言う表現の方が正確です。 あと、ANDを覚えた所ならORも対で覚えておくと良いです。 仲間にXORと言うのもありますが、こちらは余力が有ればw XOR自分的には、あまり使う機会がない^^;
2そうだね
プレイ済み
返信[11]
親投稿
ヨシヒロ yoshihiro77
Godotさんありがとうございます。 2進数は知っていますのでなんとか理解しました! 一桁目から順にボタンが割り当てられてるのですね。10進数で考えていたので理解していませんでした。 0000000000001 上 0000000000010 下 0000000000100 左 0000000001000 右 0000000010000 A 0000000100000 B 以下略 僕の見ている本にANDと一緒にORとXORも載っておりました。これは同時に覚える必要がありますね。 まだまだ入り口。頑張って行きます。
2そうだね
プレイ済み
返信[12]
親投稿
Godot orz_127
今、改めて読んでみたら最初に書いた説明部分の値とキーの方向が間違っていました^^; 上下左右の値は、ヨシヒロさん他の方がコメントで書いている値が正解です m(_ _)m それをベースに説明をしてしまったので全体的に間違ってます。 でも、説明的には伝わった様なのでよかったです^^
3そうだね
プレイ済み