投稿
おちゃめ ochame_nako
実数を2進数に変換する関数、N進数を10進数に変換する関数を作りました。 これを使って1つの実数型変数で63個のフラグ管理ができます。詳しくはコメントにて。
9そうだね
プレイ済み
返信[1]
親投稿
おちゃめ ochame_nako
2進数に変換するBIN$、BIN64$のリストはこちらです。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
BIN$は実数(整数値)を53桁までの2進数に変換できます。負数は補数で表記されます。 例:B$=BIN$(A,40) 変数Aの値を40桁の2進数に変換 BIN64$はinf、nan以外のすべての実数値を符号部1桁、指数部11桁、仮数部52桁、計64桁の2進数に変換します。 例:B$=BIN64$(0.1) (B$の値は0011111110111001100110011001100110011001100110011001100110011010になる)
0そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
10進数に変換するDECI、DECI64のリストはこちらです。
0そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
DECIは2~16進数を10進数に変換できます。第2引数が変換元の進数になります。 なお特例として第2引数が0の時は符号無し2進数、1の時は符号付き2進数(補数)を示します。 小数で指定した時には補数となります。例えば補数で表した16進数(要するに負数)を10進数に変換したい場合負数は第2引数を16.1のように指定してください。 例:A=DECI(B$,1) 変数B$を補数表記の2進数として10進数に変換 例:A=DECI("FFFFFFFFFE",16.1) 補数表記の16進数として変換(Aの値はー2になる) 例:A=DECI("12345",3) 3進数ではあり得ないためエラーを返す DECI64は64桁で表記された実数型の2進数を実数に変換します。inf、nan対応 例:A=DECI64(B$) Aの値を正確に表示するにはPSTR$を使うと便利です。
0そうだね
プレイ済み
返信[5]
親投稿
おちゃめ ochame_nako
1つの実数型変数で63個のフラグ管理が可能になるFLAG、FLAGREAGのリストはこちらです。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
FLAG関数は0~62のフラグ番号を自由にONやOFFにしたりできます。 ONにするには1もしくはTRUE、OFFにするには0もしくはFALSEとします。 -1を指定すればONとOFFを入れ替えます。 例:A=0 変数Aの0~62のすべてのフラグをOFFにする。 例:A=FLAG(A,10,TRUE) 変数Aのフラグ番号10をONにする 例:B=FLAG(B,62,0) 変数Bのフラグ番号62をOFFにする。 例:C=FLAG(C,20,-1) 変数Cのフラグ番号20のONとOFFを入れ替える。 ※代入する変数と読み出す変数は必ず「同じ」変数にしてください。
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
FLAGREAD関数は指定のフラグ番号がONかOFFかを返します。 例:F=FLAGREAD(A,10) 変数Aのフラグ番号10がONならばFの値は1になる。 ※代入する変数と読み出す変数は必ず「異なる」変数にしてください。 64桁なのに63個のフラグしか管理できないのはinfやnanの場合は正常な値を返さないので除外しているためです。 
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
上記6つの自作関数の公開キーは【 4KX3AXY3 】です。 近日中に私が作った自作関数を1つのプロジェクトにまとめて公開するので上記公開キーはそれまで有効です。 これだけ長々と書いたけどフラグが31個までならば整数値を使えば普通にビット演算ができるためこれより遙かに簡単にフラグ管理プログラムが作れます。 また、実数型を2進数で表記してもフラグ管理以外での使い道はないかもしれません。 「プチコン3号の内部ではこんな感じで数値が表記されているんだなぁ」と感慨深くなってもらえれば十分です。(※あくまでこれは一般的な倍精度浮動小数点の形式でありプチコン3号これと同じ形式で実数が扱われているという保証をするものではありません) BIN$やDECIはそれなりに活用できる用途があるかもしれません。
1そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
《 注意 》 この自作関数を作った後で公式にBIN$が加わりました。そのため普通に実行するとDuplicate functionエラーとなります。 これを改善するにはファイル中のBIN$の部分をBIN53$などの別の関数名に変更する必要があります。(BIN64$の中にも2箇所BIN$が使われているためその2箇所も同じ名前に変更する)
0そうだね
プレイ済み