# How to convert integer number into binary vector?

How to convert an integer number into binary vector using R?

For example :

``````number <- 11
 1 0 1 1
``````

what is the fastest possible method of conversion (using R code or some existing functions from packages) if I need to convert whole vector of numbers (minimum value = 0, maximum =300) into binary matrix ?

Follow the rabbit : `base::intToBits`

There's the `intToBits` function that converts any integer to a vector of 32 raws, so you can do this:

``````decimals <- c(3,5,11,4)
m <- sapply(decimals,function(x){ as.integer(intToBits(x))})
m

> m
[,1] [,2] [,3] [,4]
[1,]    1    1    1    0
[2,]    1    0    1    0
[3,]    0    1    0    1
[4,]    0    0    1    0
[5,]    0    0    0    0
[6,]    0    0    0    0
[7,]    0    0    0    0
[8,]    0    0    0    0
[9,]    0    0    0    0
[10,]    0    0    0    0
[11,]    0    0    0    0
[12,]    0    0    0    0
[13,]    0    0    0    0
[14,]    0    0    0    0
[15,]    0    0    0    0
[16,]    0    0    0    0
[17,]    0    0    0    0
[18,]    0    0    0    0
[19,]    0    0    0    0
[20,]    0    0    0    0
[21,]    0    0    0    0
[22,]    0    0    0    0
[23,]    0    0    0    0
[24,]    0    0    0    0
[25,]    0    0    0    0
[26,]    0    0    0    0
[27,]    0    0    0    0
[28,]    0    0    0    0
[29,]    0    0    0    0
[30,]    0    0    0    0
[31,]    0    0    0    0
[32,]    0    0    0    0
``````

This SO post suggests the `intToBits` function. I define the function `number2binary`, which includes an argument `noBits` to control how many bits are returned. Standard is to return 32 bits.

``````number2binary = function(number, noBits) {
binary_vector = rev(as.numeric(intToBits(number)))
if(missing(noBits)) {
return(binary_vector)
} else {
binary_vector[-(1:(length(binary_vector) - noBits))]
}
}
``````

And for some examples:

``````> number2binary(11)
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
> number2binary(11, 4)
 1 0 1 1
``````

Try the CRAN package "binaryLogic"

``````library(binaryLogic)

as.binary(11)
 1 0 1 1

as.binary(11, littleEndian=TRUE)
 1 1 0 1

as.binary(42, n=16)
 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0

as.binary(0:2, n=2)
[]
 0 0

[]
 0 1

[]
 1 0

as.binary(0xFF)
 1 1 1 1 1 1 1 1
``````

Also available: shift, rotate, graycode etc.