Go to the first, previous, next, last section, table of contents.

integer に対する ビット演算

以下のビット操作は integer に対して(のみ)適用されます。

Function: lsh integer1 integer2

lsh (logical shift) は、 integer1 中のビットを左( integer2 が負の場合は右) に、 integer2 だけシフトします。両方のアーギュメントが負の場合、lsh はシフ

トを行なう際 0 を入れます。セクション 4.4 [ash]、ページ 37 参照。

Function: ash integer1 integer2

ash (arithmetic shift) は、 integer1 中のビットを左( integer2 が負の場合は 右)に、 integer2 だけシフトします。これは integer1 と integer2 が両方とも 負である場合を除き lsh と同じ結果を返します。この(訳注:integer1 と integer2 が両方とも負である)場合、(lsh はシフトを行なう際 0 を入れますが) ash はシフトを行なう際その左側から(その)符号ビットを入れます。

                  ;               24 ビット バイナリー値
  (lsh 5 2)       ;  5 に対して:  00000000 00000000 00000101
       => 20      ; 20 に対して:  00000000 00000000 00010100
  (ash 5 2)
       => 20
  (lsh -5 2)      ; -5 に対して:  11111111 11111111 11111011
       => -20     ;-20 に対して:  11111111 11111111 11101100
  (ash -5 2)
       => -20
  (lsh 5 -2)      ;  5 に対して:  00000000 00000000 00000101
       => 1       ;  1 に対して:  00000000 00000000 00000001
  (ash 5 -2)
       => 1
  (lsh -5 -2)     ; -5 に対して:  11111111 11111111 11111011
       => 4194302 ; <- に対して:  00111111 11111111 11111110
  (ash -5 -2)     ; -5 に対して:  11111111 11111111 11111011
       => -2      ; -2 に対して:  11111111 11111111 11111110

Function: logand &rest m-integers

この関数は、アーギュメントの "logical and" を返します。結果の n ビット目 は、 (全ての)アーギュメントで n ビット目がセットされている場合にのみセット されます。

アーギュメントが存在しない場合、結果は -1 になります。

logand, logior, logxor に対し、1つしかアーギュメントが存在しない場合、その アーギュメントが結果となります。アーギュメントが 2 つ以上存在する場合、累 積的に(訳注:cummulatively) 処理を行ないます。

                        ;       24 ビット バイナリー値
  (logand 14 13)        ;14  =  00000000 00000000 00001110
                        ;13  =  00000000 00000000 00001101
       => 12            ;12  =  00000000 00000000 00001100
  (logand 14 13 4)      ;14  =  00000000 00000000 00001110
                        ;13  =  00000000 00000000 00001101
       => 4             ;12  =  00000000 00000000 00000100
  (logand)
       => -1            ; -1 =  11111111 11111111 11111111

Function: logior &rest m-integers

この関数は、アーギュメントの "inclusive or" を返します。結果の n ビット目 は、 (少なくとも) 1つのアーギュメントで n ビット目がセットされている場合に のみセットされます。アーギュメントが存在しない場合、結果は 0 になります。

                       ;       24 ビット バイナリー値
  (logior 12 5)        ;12  =  00000000 00000000 00001100
                       ; 5  =  00000000 00000000 00000101
       => 13           ;13  =  00000000 00000000 00001101
  (logior 12 5 7)      ;12  =  00000000 00000000 00001100
                       ; 5  =  00000000 00000000 00000101
                       ; 7  =  00000000 00000000 00000111
       => 15           ;15  =  00000000 00000000 00001111

Function: logxor &rest m-integers

この関数は、アーギュメントの "exclusive or" を返します。結果の n ビット目 は、奇数個のアーギュメントで n ビット目がセットされている場合にのみセット されます。アーギュメントが存在しない場合、結果は 0 になります。

                       ;       24 ビット バイナリー値
  (logxor 12 5)        ;12  =  00000000 00000000 00001100
                       ; 5  =  00000000 00000000 00000101
       => 9            ; 9  =  00000000 00000000 00001001
  (logxor 12 5 7)    ;12  =  00000000 00000000 00001100
                     ; 5  =  00000000 00000000 00000101
                     ; 7  =  00000000 00000000 00000111
       => 14         ;15  =  00000000 00000000 00001110

Function: lognot integer

この関数は、アーギュメントの logical complement を返します。結果の n ビッ ト目は、 integer の n ビット目がセットされていない場合にのみセットされま す。

  (lognot 5 )            ; 5  =  00000000 00000000 00000101
       => -6             ;-6  =  11111111 11111111 11111010


Go to the first, previous, next, last section, table of contents.