【发布时间】:2023-03-28 16:30:01
【问题描述】:
我正在编写 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 脚本中获得日志。我们有圆吗?不确定。
但我知道你非常聪明,可以提出一个优雅而令人印象深刻的解决方案。
【问题讨论】:
-
请在您的问题中添加示例输入和该示例输入所需的输出。
-
Bash 不支持非整数算术,更不用说超越函数了,所以你不能使用对数。您可以转换为二进制,使用最重要的 1 之后的位来决定是向上还是向下舍入,然后将其余位变为 0..
标签: bash shell math scripting arithmetic-expressions