% Function BIT-AND, BIT-ANDC1, BIT-ANDC2, BIT-EQV, BIT-IOR, BIT-NAND, BIT-NOR, BIT-NOT, BIT-ORC1, BIT-ORC2, BIT-XOR
Function BIT-AND
, BIT-ANDC1
, BIT-ANDC2
, BIT-EQV
,
BIT-IOR
, BIT-NAND
, BIT-NOR
, BIT-NOT
,
BIT-ORC1
, BIT-ORC2
, BIT-XOR
bit-and
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-andc1
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-andc2
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-eqv
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-ior
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-nand
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-nor
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-orc1
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-orc2
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-xor
bit-array1 bit-array2 &optional
opt-arg => resulting-bit-array
bit-not
bit-array &optional
opt-arg => resulting-bit-array
bit-array, bit-array1, bit-array2 - ビット配列
opt-arg - ビット配列か、t
か、nil
。
デフォルトはnil
。
bit-array, bit-array1, bit-array2, opt-arg(もし配列なら)は、
全て同じランクと大きさでなければなりません。
resulting-bit-array - ビット配列
これらの関数は、bit-array1とbit-array2のビット単位の論理操作を行い、 その結果の任意のビットが各引数の対応するビットを操作することによって 生成されるような、ランクと次元が一致する配列を返します。
bit-not
の場合は、bit-arrayにランクと次元が一致する配列が返却され、
その配列にはbit-arrayの全てのビットが逆転したもののコピーが含まれます。
もしopt-argが型(array bit)
であれば、
返却される内容はopt-argの中に破壊的に配置されます。
もしopt-argがシンボルt
のとき、
bit-arrayかbit-array1が結果に置き換えられます。
もしopt-argがnil
か省略されたときは、
結果を格納した新しい配列が作成されます。
次の図は各関数によって処理される論理操作を示します。
関数 | 処理 |
---|---|
bit-and |
and |
bit-eqv |
同値(排他的nor) |
bit-not |
補数 |
bit-ior |
内包的or |
bit-xor |
排他的or |
bit-nand |
(bit-array1 and bit-array2)の補数 |
bit-nor |
(bit-array1 or bit-array2)の補数 |
bit-andc1 |
(bit-array1の補数) and bit-array2 |
bit-andc2 |
bit-array1 and (bit-array2の補数) |
bit-orc1 |
(bit-array1の補数) or bit-array2 |
bit-orc2 |
bit-array1 or (bit-array2の補数) |
Figure 15-4. ビット配列上のビット単位の論理演算
(bit-and (setq ba #*11101010) #*01101011) => #*01101010
(bit-and #*1100 #*1010) => #*1000
(bit-andc1 #*1100 #*1010) => #*0010
(setq rba (bit-andc2 ba #*00110011 t)) => #*11001000
(eq rba ba) => true
(bit-not (setq ba #*11101010)) => #*00010101
(setq rba (bit-not ba
(setq tba (make-array 8
:element-type 'bit))))
=> #*00010101
(equal rba tba) => true
(bit-xor #*1100 #*1010) => #*0110
なし。
なし。
なし。