gpt4 book ai didi

bash - 在 bash 中四舍五入到最接近的 2 的幂

转载 作者:行者123 更新时间:2023-12-03 09:19:47 28 4
gpt4 key购买 nike

我正在编写 shell 脚本,我想将给定的整数四舍五入到最接近的 2 的幂。我们可以使用 Linux 命令行中提供的任何标准工具。你可以假设 bash。因此算术扩展和 bc 都可以使用。

在对数刻度上舍入到最接近的 2 的幂(不是作为 shell 脚本):

r = 2^(round(log2(x)));

想象一个函数的输入和输出如下:

# power2 11
8
# power2 12
16
# power2 13
16
# power2 16
16

我不确定我们是否可以从 bash shell 脚本获取日志。我们有圆吗?不确定。

但我知道你非常聪明,可以想出一个优雅且令人印象深刻的解决方案。

最佳答案

使用此功能:

power2() { echo "x=l($1)/l(2); scale=0; 2^((x+0.5)/1)" | bc -l; }

示例

$ power2 11
8
$ power2 12
16
$ power2 13
16
$ power2 16
16
$ power2 63
64

它是如何工作的

echo 语句创建一个 bc 将解释为命令的字符串。命令包含以下内容:

  • x=l($1)/l(2)

    这会将 x 设置为第一个参数 l($1) 的自然对数的值,除以 2 的自然对数,l(2 )

  • scale=0

    通过将 scale 设置为 0,以后的除法将截断为整数。

  • 2^((x+0.5)/1)

    表达式(x+0.5)/1x 舍入为最接近的整数。然后我们计算结果的 2 次方。

关于bash - 在 bash 中四舍五入到最接近的 2 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33659076/

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