agunesu さんが書きました: ↑6年前
AND演算子で比べることはわかったのですが、結局iには何の数字が入るのですか?
i は 0~15 の値を取り、それはジョイパッドのボタン番号です。
下ボタンは 0、左ボタンは 1、...、スタートボタンは 13。
PadInput は int で、その下位16ビットの各ビットが 0 か 1 かで、
どのボタンが押されたのかを示します。
スタートボタンが押されたら、右から13ビット目が 1 になりますから、
二進で 0010000000000000、それは十進で 8192 です。
for (i = 0; i < 16; i++) { により、
まず i は 0 で mul は 1 ですから、
PadInput & mul は、0010000000000000 & 0000000000000001 → 0000000000000000
下ボタンは押されていなかった。pad.key[0] = 0;
次に i は 1 で mul は 2 ですから、
PadInput & mul は、0010000000000000 & 0000000000000010 → 0000000000000000
左ボタンは押されていなかった。pad.key[1] = 0;
i が 13 になった時 mul は 8192 ですから、
PadInput & mul は、0010000000000000 & 0010000000000000 → 0010000000000000
ゼロじゃない! スタートボタンは押されていた。
pad.key[13]++; で押され続けていた回数をカウントアップ。
i はボタン番号であり、
PadInput の中では、右端から何ビット目かを表し、
pad.key という配列では、何番目の要素であるかを示します。