A set of minimal extensions to R’s built-in bitwise operations,
mainly for use with bitmasks.
This provides C functions to AND, OR or XOR a vector of integers
together, to compress down to a single int. It also provides infix
operators for bitwise operations, using the base functions.
If using bitops
, the infix operators are redundant.
You can install the development version of vectorbitops like so:
::install_gitlab("S_S_/vectorbitops") devtools
This is a basic example of use for some simple bitmasking.
library(vectorbitops)
<- c(
vals "foo" = 1 %<<% 0,
"bar" = 1 %<<% 1,
"baz" = 1 %<<% 2
)
<- vals["foo"]
mask_a <- vals["baz"]
mask_b <- bit_vector_OR(vals[c("bar", "baz")])
mask_c <- bit_vector_OR(vals[c("foo", "bar")])
flags
# In practise, one would just use `bitwAnd` for the below, but for demostration purposes:
bit_vector_AND(c(flags, mask_a)) # 1
bit_vector_AND(c(flags, mask_b)) # 0
bit_vector_AND(c(flags, mask_c)) # 2