論理演算子

プチコン3号 プチコンBIG 

&& || AND OR XOR !

解説

論理演算式意味
(条件1) && (条件2)条件1 かつ 条件2 を満たす
(条件1) || (条件2)条件1 または 条件2 を満たす
A AND Bビットごとの&& (論理積)
A OR Bビットごとの|| (論理和)
A XOR BビットごとのXOR(排他的論理和)
!否定(!(A==1)は、A!=1と同じ意味)
※「条件」については比較演算子を参照
&&、||
&&、|| は、複数の真(TRUE)と偽(FALSE)値を組み合わせて、新たな真偽結果を出します。(サンプルコード参照)
※「|」はキーボードの左下、「A」の左側にある。
AND、OR、XOR
AND、OR、XOR は、数値を2進数の桁ごとに論理演算(ビット演算)します。
対象となるのは数値対数値で、結果として新たな数値を返します。
<例>
「A=6、B=3」の場合、
A AND B
A OR B
A XOR B
は、まずそれぞれを2進数に変換します。
A=6 → 2進数では「110」
B=3 → 2進数では「011」
これを各桁ごとに演算してゆきます。
ANDの場合、両方のビットが1の時、その桁は1
A=110
B=011
  ---
X=010 → 10進数で2
ORの場合、どちらかのビットが1であれば、その桁は1
A=110
B=011
  ---
Y=111 → 10進数で7
XORの場合、値が異なる桁が1
A=110
B=011
  ---
Y=101 → 10進数で5

使用例はサンプルコードを参照

サンプルコード

&&、|| の例
IF (A==2 && B==3) THEN C=0  'Aが2、かつ、Bが3の場合、Cを0にする
IF (A==2 || B==3) THEN C=0  'Aが2、または、Bが3の場合、Cを0にする
AND、OR の例
十字キー(斜め入力にも対応)でキャラクターを動かすサンプルコード
※「B AND 1」は「(B AND 1)!=0」の意味。比較演算子参照
DIM X=200:Y=200
SPSET 0,1275 'スプライト0番にキャラをセット(1275:赤い戦闘機)
 
@MAINLOOP
B=BUTTON()  '十字キーの値を取得。詳しくはBUTTONを参照
 
'上が押されるとBの1桁目が1(???1)になるので、B AND 1(0001)で1桁目が1かを調べる
IF B AND 1 THEN Y=Y-1
'下が押されるとBの2桁目が1(??1?)になるので、B AND 2(0010)で2桁目が1かを調べる
IF B AND 2 THEN Y=Y+1
'左が押されるとBの3桁目が1(?1??)になるので、B AND 4(0100)で3桁目が1かを調べる
IF B AND 4 THEN X=X-1
'右が押されるとBの4桁目が1(1???)になるので、B AND 8(1000)で4桁目が1かを調べる
IF B AND 8 THEN X=X+1
 
SPOFS 0,X,Y 'キャラを画面に表示
VSYNC       '実際に表示されるまで待つ
GOTO @MAINLOOP
ビット反転の例
FOR I=0 TO 20
? I,HEX$(I,8),HEX$(NOT I,8) 'HEX$で16進数に変換
 
実行結果
0   00000000  FFFFFFFF
1   00000001  FFFFFFFE
2   00000002  FFFFFFFD
3   00000003  FFFFFFFC
4   00000004  FFFFFFFB
5   00000005  FFFFFFFA
6   00000006  FFFFFFF9
7   00000007  FFFFFFF8
8   00000008  FFFFFFF7
9   00000009  FFFFFFF6
10  0000000A  FFFFFFF5
11  0000000B  FFFFFFF4
12  0000000C  FFFFFFF3
13  0000000D  FFFFFFF2
14  0000000E  FFFFFFF1
15  0000000F  FFFFFFF0
16  00000010  FFFFFFEF
17  00000011  FFFFFFEE
18  00000012  FFFFFFED
19  00000013  FFFFFFEC
20  00000014  FFFFFFEB

参照

算術演算子 + - * / MOD DIV << >> NOT カッコ
比較演算子 == != < <= > >=
論理演算子 && || AND OR XOR !

Facebookコメント