■2進数の上位4ビットを取り出したい
Q.8ビットの数値0〜255の値の上位、下位の4ビットを取り出すにはどうしたらよいですか?
A.2進数の上位4ビットと下位4ビットを取り出すには、論理演算を使います。
and
or
などです。
たとえば、andをこんな風に使います。
□□□□ □□□□ 元の値
and
□□□□ ■■■■ 0xf (15と同じ意味)
結果は下位の4ビットだけをマスクで切り出したようになります。
以下は取り出しのサンプル
1行目の値を16進数で0〜ffで指定します。
a=0xfa
b=a and 0x0f
c=(a and 0xf0)>>4
mes strf("元の値 8bit:%x",a)
mes strf("下位 4bit:%x",b)
mes strf("上位 4bit:%x",c)
stop
■^と&と|の意味がわかりません。
Q.^と&と|の意味がわかりません。特に^はXORと書いてありましたが、何ですか?
A.その記号は論理演算というものです。
数値を2進数に変換して、各桁で論理演算を行います。
OR(|)は1けただけで考えると
A|B
0|0=0
0|1=1
1|0=1
1|1=1
どちらかが1なら1です。
AND(&)は
A&B
0&0=0
0&1=0
1&0=0
1&1=1
両方が1なら1です。
XORを1けただけで考えると
A^B
0^0=0
0^1=1
1^0=1
1^1=0
ORに近いのですが、どちらか片方が1の場合、1になります。
両方を足した1桁目(桁上がりした10は無視)と考えるとわかりやすいかもしれません。
XORは排他的論理和という論理演算です。
何に使うかというと・・・
たとえばこんな用途です。
A=299
mes A
B=21726
C=A^B
mes C
C=C^B
mes C
stop
これは数値の簡単な暗号化です。
Aが元の情報、Bが暗号化のキーだとします。
XORをかけると、なんだかわからない数値になりますが、
同じ値でもう一度XORをかけると、元の値に戻ります。
■パレットって何?
Q.パレットってよくわかりません。
A.パレットとは、むかしPCが遅かったときの考え方です。
言葉のもとは、水彩画などの絵の具をだす道具”パレット”です。
本来なら6万色を表示したいのですが、それをやってしまうと遅くなる、ということで、その中から256色を選んで、パレットに絵の具を取るように設定します。
グラフィックソフトなどでフルカラーから256色(正確には256色は遣えませんが)を選んで変換してくれますが、グラフィクが複数あると、違うパレットで最適化されてしまいます。
その色の集まりの情報をpalcopyで同じパレットにあわせるのです。
速度やメモリを節約するための概念ですが、現在は必要ないと思います。
■文字列をそろえたい
Q.名前や電話番号など、文字列を整列して表示したい。
A.strmid命令を使って、空白を調整する方法があります。
■モジュール内でDLLの命令を使いたい
Q.モジュールの中なら、DLLで読み込んだ命令を呼び出すとエラーになります。。
A."@"を使います。
たとえば、その命令が”fxdir”で
fxdir a,5
だったら
fxdir@ a,5
という風に命令の後に@をつければ動きます。