Bitwise operations, ‘and’ (&), ‘or’ (|), and ‘Xor’ (xor).

bitAnd(a, b)
a %&% b
bitOr (a, b)
a %|% b
bitXor(a, b)
a %^% b

Arguments

a,b

numeric vectors of compatible length, each treated as 32 bit “strings”.

Details

The bitwise operations are applied to the arguments cast as 32 bit (unsigned long) integers. NA is returned wherever the magnitude of the arguments is not less than \(2^31\), or, where either of the arguments is not finite.

For bitwise ‘not’ (! in R), use bitFlip().

Value

non-negative integer valued numeric vector of maximum length of a or b.

Author

Steve Dutky; idea for operators: Dan L Robertson

See also

bitFlip, bitShiftL; further, cksum.

Examples

bitAnd(15,7) == 7 ;  identical(15 %&% 7, bitAnd(15, 7))
#> [1] TRUE
#> [1] TRUE
bitOr(15,7) == 15 ;  identical(15 %|% 7, bitOr (15, 7))
#> [1] TRUE
#> [1] TRUE
bitXor(15,7) == 8 ;  identical(15 %^% 7, bitXor(15,7))
#> [1] TRUE
#> [1] TRUE
bitOr(-1,0) == 4294967295 ; identical(-1 %|% 0, bitOr(-1,0))
#> [1] TRUE
#> [1] TRUE