gpt4 book ai didi

r - 是 2 的幂

转载 作者:行者123 更新时间:2023-12-04 10:31:18 25 4
gpt4 key购买 nike

如何判断一个数是否是2的幂?以下是我到目前为止的想法:

# check every number in a vector
y <- 1:100000000
x <- 2^(0:100)
y %in% x
y[(y %in% x)==TRUE]

# check a single number
y <- 250000
x <- 2^(0:100)
y %in% x

# check a single random number
y <- sample(1000000000,1)
x <- 2^(0:100)
y %in% x

有没有更好的方法?上面的方法对我来说似乎不是很普遍,并且它在非常大的数字下失败,大概是因为四舍五入错误:
# 2^95 = 39,614,081,257,132,168,796,771,975,168

# correct
y <- 39614081257132168796771975168
x <- 2^(0:100)
y %in% x

# incorrect
y <- 39614081257132168796771975167
x <- 2^(0:100)
y %in% x

其他语言的 Stack Overflow 上有许多类似的问题,答案似乎涉及位模式。这种方法可以与 R 一起使用吗?与这种方法相比,我的方法似乎并不复杂,我认为可能有更好的方法。谢谢你的任何建议。

最佳答案

是的,您可以查看 R 中的位模式:

isPowerOf2 <- function(x) {
n1s <- sum(as.numeric(intToBits(x)))
if (n1s == 1) {
return(TRUE)
} else {
return(FALSE)
}
}

关于r - 是 2 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com