我想在R中编程函数以允许我将任何整数n分解为n = 2 ^ j + k,其中j> = 0且0 <= k <2 ^ j。我曾考虑使用模数运算,但未能得到小于2 ^ j的k。有人会有任何想法吗?谢谢!
答案 0 :(得分:3)
对于n > 0
的值,您可以尝试此功能:
pow2_decompose <- function(n) {
j <- trunc(log2(n))
k <- n - 2**j
return(list(j,k))
}
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