以下のビット操作は 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