「Boole」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の6版が非表示)
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  || 入力ビットの少なくとも一方が 1
|  7      || OR  || 入力ビットの少なくとも一つが 1
|-
|-
|  8      || NOR  || 入力ビットが共に 0(1 の補数)
|  8      || NOR  || 入力ビットが共に 0 (1 の補数)
|}
|}


61行目: 65行目:
  >> 12
  >> 12


; Oスナップで垂線スナップが設定されているかどうかチェックする。
; Oスナップで垂線スナップ(ビットコード:128)が設定されているかどうかチェックする。
(boole 1 128 (getvar "OSMODE"))
(boole 1 128 (getvar "OSMODE"))
>> 128 ; 設定されてる
>> 128 ; 設定されてる
68行目: 72行目:


</pre>
</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 ; 設定されてない



関連事項