FAQ4

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

という風に命令の後に@をつければ動きます。


FAQへ戻る