それが真と偽の区別しか必要ないデータなんです。
0と1だけの区別しかないのに1byteづつ使っているととんでもないことになる量なので、
ビット操作をしようということになりました。
で、文字列型変数を使うことにして、次のようなソースを書きました。
(下ソース自体はintでもdoubleでもいけると思います)
割り算とかも最初は考えたのですが、そもそもの用途からして、
#module #deffunc BitPokeO var _dat, int _n, int _f //p1変数のp2 bit目を変更します。 //p2は0から開始します。 //p3には0かそれ以外を指定して、off/onとします。 _Chk =_n>>3 _Chkn =_n-(_Chk<<3) if _f{ poke _dat,_Chk,peek(_dat,_CHk) or 1<<_Chkn }else{ poke _dat,_Chk,peek(_dat,_CHk) and 1<<_Chkn xor peek(_dat,_Chk) } return //"BitPokeO _a,0,1"を実行すると_aは1に、"BitPokeO _a,8,1"では256になります。 #global #module #defcfunc BitPeekO var _dat, int _n //p1変数のp2 bit目を参照します。 //p2は0から開始します。 //返り値は0かそれ以外です。1以外が返る場合に注意してください。 _Chk =_n>>3 _Chkn =_n-(_Chk<<3) return peek(_dat,_Chk) and 1<<_Chkn #global
この命令と関数は何度も実行されるものですよね。
実行時間が長くなると困るので、ビットシフトで代用しました。
それで、ここからが本題なのですが、
このソース、もっと早くはならないでしょうか。
何かいいお考えをお持ちの方は教えてください。