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