如何在R中编写函数来将任何整数分解为2的幂加上一些数?

时间:2016-03-03 08:57:35

标签: r

我想在R中编程函数以允许我将任何整数n分解为n = 2 ^ j + k,其中j> = 0且0 <= k <2 ^ j。我曾考虑使用模数运算,但未能得到小于2 ^ j的k。有人会有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:3)

对于n > 0的值,您可以尝试此功能:

pow2_decompose <- function(n) {
  j <- trunc(log2(n))
  k <- n - 2**j
  return(list(j,k))
}

Example:

n <- 1289
j <- pow2_decompose(n)[[1]]
k <- pow2_decompose(n)[[2]]
cat(j,k,"\n")
#10 265 
identical(2**j + k, n)
#[1] TRUE