プレイ日記
reji Satoshi.1103
最近気づいたけど、変数が一定の数いったら0に戻すやつ、IF使わなくてもANDで論理積を求めてあげれば一発で出来るんだ~。 OSPやQSPに便利ですね。
8そうだね
プレイ済み
返信[1]
親投稿
けい kei0baisoku
確かにプログラムの定石だけど、齢1Xにして自力で気付くとは…… サトシ、恐ろしい子………!
1そうだね
プレイ済み
返信[2]
親投稿
say sayer.exe
ビッグになっても私のことは忘れないでくださいぃぃ! あうあうぁぅぁぅ!
0そうだね
プレイ済み
返信[3]
親投稿
********** itd12d
ほんとにサトシさんは俺と同じ10代なのか...
1そうだね
プレイ済み
返信[4]
親投稿
nobu divine-creator
知り過ぎた玄白「パペットさんはサトシさんの正体に気付いてしまったようだ!彼が…………だということに…。(意味深)」
0そうだね
プレイ済み
返信[5]
親投稿
reji Satoshi.1103
皆さんコメントありがとうございます! 実は、プチコンムックで地味にこのテクニックを使っていたので分かりやすいCOLOR命令でまとめてみました。 嬉しいお言葉を頂き本当にありがとうございます!
0そうだね
プレイ済み
返信[6]
親投稿
ほしけん Hosiken
これってMODのほうがよく使われてるかもしれません。 A=(A+1)MOD 30 または A=A MOD 30+1 のほうが1文字少ないです。
1そうだね
プレイ済み
返信[7]
親投稿
けい kei0baisoku
そうそう、普通はMOD(剰余)を先に覚えて、高速化の需要を満たすために論理積で似たことができるのを覚えて………って順番ですね。 ビット演算はコンピュータにとても優しいので、割り算と比べると桁違いに速度に差があります。 速度が必要な場面とかで覚えておくといいかも。 ※プチコンは途中に仕組みが色々入るので多少事情が異なるかもしれません。
1そうだね
プレイ済み
返信[8]
親投稿
reji Satoshi.1103
なるほど! MODって今までは奇数と偶数と見分けたりする使い方しかしてなかったけどそんな使い方も出来るんですね。 本当にありがとうございました。
0そうだね
プレイ済み
返信[9]
親投稿
say sayer.exe
c and &b01 …うーん
2そうだね
プレイ済み
返信[10]
親投稿
ビット演算は、けいさんの謂ってる通り、コンピュータに優しい(解り易い)物です。プチコン3号では、ボタンの検出に頻繁に使用するので、馴染み易いと想います。 因みに、変数Xの値が0の時に1、1の時に0にするには、人間に解り易く記述すると、下記の様に成ります。 IF X==0 THEN X=1 ELSE X=0 此れを、コンピュータに解り易く記述すると、下記の様に成ります(当然速い)。 X=X XOR 1 亦、プチコン3号では、ビット操作するシフト演算子も使用出来ます。変数Xの値を2倍する場合、下記の様に記述する事が出来ます。 X=X<<1 '左に1ビットシフト 高速化が必要な時に試して観て下さい。
1そうだね
プレイ済み
返信[11]
親投稿
reji Satoshi.1103
なるほど! ANDでも奇数と偶数の判断が出来るのですね。 高速化が必要なときはANDやOR、XORをこれから使っていきたいと思います。 皆さん本当にありがとうございました! とても参考になりました。
0そうだね
プレイ済み
返信[12]
親投稿
Godot orz_127
自分の過去の投稿 「2015/2/6」「2015/2/17」に メニュー表示して選択用のカーソルを動かす簡単な例があります。 ここでもMODを使っています。 MODの使用例として参考になれば、 ということで。
1そうだね
プレイ済み
返信[13]
親投稿
MIKI ifconfig
> A=(A+1)MOD 30 > または A=A MOD 30+1 のほうが1文字少ないです。 後者のように書いてはダメです。 なぜならば a==29 の時バグって 30 になります。
0そうだね
プレイ済み
返信[14]
親投稿
ほしけん Hosiken
MIKI★さんご指摘ありがとうございます。 前者だと0~29、後者だと1~30になるのを書き忘れてました。 (後者はほかに意図しない動作しないですよね? たぶん) 後者はQSPとかでとにかく切り詰めたいときに便利かな~? って感じです。
0そうだね
プレイ済み
返信[15]
親投稿
おちゃめ ochame_nako
変数Xの値が0の時に1、1の時に0にするにはX=!Xと記述するのが最短ですね あとプチコン3号では剰余もビット演算もそこまで大きな速度差はありません。 ビット演算を使うならば A=(A+1)AND 31 ではなく A=31AND(A+1) と記述する方が高速かつ1文字短縮できてお得です。 剰余はプチコンmkIIではC言語と同じく「%」だったので例えば8方向移動とかでも X=X-(B%16-B%4+1)%3+1Y=Y-(B%4+1)%3+1 のような感じの記述で超多用していましたがプチコン3号になって1つあたり3文字分も増加したので私はmkIIと比べて使う機会は激減しました。
1そうだね
プレイ済み
返信[16]
親投稿
reji Satoshi.1103
(返信遅れました本当にすいません。) 皆さんいろんな解説ありがとうございます! とても参考になりました。 MODもいろんな使い方がかることも分かりました。 本当にありがとうございました。
0そうだね
プレイ済み
返信[17]
親投稿
変数Xの値が0の時に1、1の時に0にするには、プチコン3号では X=!X と記述出来ますが、此れはプチコン3号が偽(FALSE)を0、真(TRUE)を1と仕て居るからで、本来、!演算子は、ブール型の為の演算子で、整数や浮動小数点数に使用出来る物では有りません(Visual C#ではコンパイルエラー)。ビット毎の反転(否定)を行うには、プチコン3号では、NOT演算子を用いますが、8ビットで例を上げると、00000000の否定は11111111で、此れは最上位ビットを符号ビットとする算術的に観ると-1と成り、論理的に観ても255と成ります(X=0:X=NOT X:PRINT Xで確認可)。 将来、色々な言語を使用するで有ろう人達が、斯うしたコンピュータの動作原理に関わる基本的な部分で、特定のコンピュータ固有の仕様に染まるのは感心しません、為念。
0そうだね
プレイ済み
返信[18]
親投稿
MIKI ifconfig
> 本来、!演算子は、ブール型の為の演算子で、整数や浮動小数点数に使用出来る物では有りません え?? 本来 ! 演算子は浮動小数点数にも使用できますよ。 > 11111111で、此れは最上位ビットを符号ビットとする算術的に観ると-1と成り 最上位ビットが符号ビットなら -127 なのでは? どういう解釈ですか? > 論理的に観ても255と成ります 「論理的に観る」ってどういうことですか??
0そうだね
プレイ済み