Bash 指数极限
Bash exponentiation limit
我想了解 Bash 中 $[a**b]
操作的最大值的原因。
$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0
根据 Bash 手册中的 Shell Arithmetic:
Evaluation is done in fixed-width integers with no check for overflow
因此,在 64 位平台上,对于有符号整数,我们在 263:
处环绕
$ echo $((2**63-1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808
我想了解 Bash 中 $[a**b]
操作的最大值的原因。
$ echo $[2**62]
4611686018427387904
$ echo $[2**63]
-9223372036854775808
$ echo $[2**64]
0
根据 Bash 手册中的 Shell Arithmetic:
Evaluation is done in fixed-width integers with no check for overflow
因此,在 64 位平台上,对于有符号整数,我们在 263:
处环绕$ echo $((2**63-1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808