| bitFlip {bitops} | R Documentation |
The binary flip (‘not’, R's !) operator, bitFlip(a, w), “flips every
bit” of a up to the w-th bit.
bitFlip(a, bitWidth = 32)
a |
numeric vector. |
bitWidth |
scalar integer between 0 and 32. |
(“binary”) numeric vector of the same length as a masked with
(2^bitWidth)-1. NA is returned for any value of
a that is not finite or whose magnitude is greater or equal to
2^{32}.
bitFlip(a, w) is an “involution”, i.e. it is its own
inverse – when a is in \{0, 1, .., 2^{32}-1\}.
Notably, negative values a are equivalent to their values in the
above range, see also bitUnique() in the ‘Examples’.
Steve Dutky
bitFlip(0:5) ## bitUnique <- function(x) bitFlip(bitFlip(x)) # "identity" when x in 0:(2^32-1) bitUnique( 0:16 ) # identical (well, double precision) bitUnique(-(1:16)) # 4294967295 ... stopifnot( identical(bitUnique(-(1:16)), 2^32 -(1:16)), bitFlip(-1) == 0, bitFlip(0 ) == 2^32 - 1, bitFlip(0, bitWidth=8) == 255 )