「Boole」の版間の差分
(ページの作成: ; 構文 : (Boole ''operator'' ''int1'' [''int2'' ...]) ; 機能 : ビット方式の汎用ブール演算関数。 ; 引数 :* operator 0から 15 の範囲の整数で、2 …) |
編集の要約なし |
||
(同じ利用者による、間の8版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (Boole ''operator'' ''int1'' [''int2'' ...]) | : (Boole ''operator'' ''int1'' [''int2'' ...]) | ||
5行目: | 7行目: | ||
; 機能 | ; 機能 | ||
: ビット方式の汎用ブール演算関数。 | : ビット方式の汎用ブール演算関数。 | ||
; 引数 | ; 引数 | ||
:* operator 0から 15 の範囲の整数で、2 つの変数に対して実行可能な 16 のブール関数を表す。 | :* operator … 0から 15 の範囲の整数で、2 つの変数に対して実行可能な 16 のブール関数を表す。 | ||
:* int1, int2... 整数。(引数補足参照) | :* int1, int2... … 整数。(引数補足参照) | ||
; 戻り値 | ; 戻り値 | ||
41行目: | 45行目: | ||
| 6 || XOR || 入力ビットの一方のみが 1 | | 6 || XOR || 入力ビットの一方のみが 1 | ||
|- | |- | ||
| 7 || OR || | | 7 || OR || 入力ビットの少なくとも一つが 1 | ||
|- | |- | ||
| 8 || NOR || 入力ビットが共に 0(1 の補数) | | 8 || NOR || 入力ビットが共に 0 (1 の補数) | ||
|} | |} | ||
; サンプル | ; サンプル | ||
: 次の例では、12 と 5 の AND(論理積)を指定している。 | <pre class="brush:autolisp;"> | ||
; 次の例では、12 と 5 の AND(論理積)を指定している。 | |||
(Boole 1 12 5) | (Boole 1 12 5) | ||
>> 4 | |||
; 次の例では、6 と 5 の XOR(排他的論理和)を指定している。 | |||
(Boole 6 6 5) | (Boole 6 6 5) | ||
>> 3 | |||
; operator 引数にその他の値を指定すると、特殊なブール演算を実行できる。 たとえば、operator が 4 の場合、int2 のあるビットがオンに設定されていて、そのビット対応する int1 のビットがオフの場合、そのビットをオンに設定する。 | |||
(Boole 4 3 14) | (Boole 4 3 14) | ||
>> 12 | |||
; Oスナップで垂線スナップ(ビットコード:128)が設定されているかどうかチェックする。 | |||
(boole 1 128 (getvar "OSMODE")) | |||
>> 128 ; 設定されてる | |||
(boole 1 128 (getvar "OSMODE")) | |||
>> 0 ; 設定されてない | |||
</pre> | |||
----- | |||
関連事項 | |||
* [[比較演算と条件]] | |||
* [[logand]] 関数 | |||
* [[logior]] 関数 | |||
* [[lsh]] 関数 | |||
* [[boole]] 関数 | |||
[[Category:AutoLISP]] | [[Category:AutoLISP]] |
2022年4月24日 (日) 08:48時点における最新版
- 構文
- (Boole operator int1 [int2 ...])
- 機能
- ビット方式の汎用ブール演算関数。
- 引数
-
- operator … 0から 15 の範囲の整数で、2 つの変数に対して実行可能な 16 のブール関数を表す。
- int1, int2... … 整数。(引数補足参照)
- 戻り値
- 整数。
- 引数補足
- Boole 関数は単一の引数を受け入れるが、結果が不定であることに注意。 後続の整数の引数を、次の表に基づいて、ビット方式で(論理的に)結合する。
論理演算の真偽値表 Int1 Int2 operator のビット 0 0 8 0 1 4 1 0 2 1 1 1
- int1 の各ビットは int2 のビットとペアとなり、このペアは上の真偽値表のいずれか 1 行に該当する。結果として得られるビットは 0 か 1 のどちらか。これは、真偽値表の該当する行に対応する operator ビットの設定によって決まる。
- 該当する operator ビットが設定されていると、結果のビットは 1 になり、それ以外の場合は 0になる。operator の値には、標準の論理演算 AND、OR、XOR、NOR に相当するものもある。
論理演算関数のビット値 operator 演算 結果のビットが 1 になる条件 1 AND 入力ビットが共に 1 6 XOR 入力ビットの一方のみが 1 7 OR 入力ビットの少なくとも一つが 1 8 NOR 入力ビットが共に 0 (1 の補数)
- サンプル
; 次の例では、12 と 5 の AND(論理積)を指定している。 (Boole 1 12 5) >> 4 ; 次の例では、6 と 5 の XOR(排他的論理和)を指定している。 (Boole 6 6 5) >> 3 ; operator 引数にその他の値を指定すると、特殊なブール演算を実行できる。 たとえば、operator が 4 の場合、int2 のあるビットがオンに設定されていて、そのビット対応する int1 のビットがオフの場合、そのビットをオンに設定する。 (Boole 4 3 14) >> 12 ; Oスナップで垂線スナップ(ビットコード:128)が設定されているかどうかチェックする。 (boole 1 128 (getvar "OSMODE")) >> 128 ; 設定されてる (boole 1 128 (getvar "OSMODE")) >> 0 ; 設定されてない
関連事項