Function BIT-AND, BIT-ANDC1, BIT-ANDC2, BIT-EQV, BIT-IOR, BIT-NAND, BIT-NOR, BIT-NOT, BIT-ORC1, BIT-ORC2, BIT-XOR

UP


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-array1bit-array2のビット単位の論理操作を行い、 その結果の任意のビットが各引数の対応するビットを操作することによって 生成されるような、ランクと次元が一致する配列を返します。

bit-notの場合は、bit-arrayにランクと次元が一致する配列が返却され、 その配列にはbit-arrayの全てのビットが逆転したもののコピーが含まれます。

もしopt-argが型(array bit)であれば、 返却される内容はopt-argの中に破壊的に配置されます。 もしopt-argがシンボルtのとき、 bit-arraybit-array1が結果に置き換えられます。 もしopt-argnilか省略されたときは、 結果を格納した新しい配列が作成されます。

次の図は各関数によって処理される論理操作を示します。

関数 処理
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

影響

なし。

例外

なし。

参考

lognot, logand

備考

なし。


TOP, Github