Bash 求幂限制

标签 bash exponential

我想了解 Bash 中 $[a**b] 操作最大值的原因。

$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0

最佳答案

根据Shell Arithmetic在 Bash 手册中:

Evaluation is done in fixed-width integers with no check for overflow

因此,在 64 位平台上,对于有符号整数,我们将其环绕为 263:

$ echo $((2**63-1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808

关于Bash 求幂限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59272727/

相关文章:

java - 在java程序中执行bash命令

bash - 如何将文件添加到 .gz 存档并删除原始文件?

python - 将指数 float 舍入为 2 位小数

c - 计算矩阵每个元素的指数的最有效方法

bash - 如何检查符号链接(symbolic link)目标是否与特定路径匹配?

bash - Google OAuth 2.0 include_granted_scopes 不适用于已安装的应用程序

c++ - C++中的指数运算符

java - 如何避免 Java Android Studio 中的 EXP 表示法

C double 到指数舍入误差

linux - 检查 bash 脚本上的特定端口是否有字符串数据