当我运行时,在我的本地机器 bash 中:
echo $((192 << 24))
3221225472
但是在我的嵌入式目标繁忙的盒子 SHELL 上,我得到了其他东西:
echo $((192 << 24))
-1073741824
不过,当我左移一个较小的数字时,它就起作用了。嵌入式设备是 64 位的,我的本地主机是 32 位的。
需要说明的是,在 32 位机器上,该值为正,在 64 位机器上为负。
编辑:这是在带有 SHELL 的 64 位机器的嵌入式设备上。左移 23 时不会发生这种情况。
echo $((192 << 23))
1610612736
echo $((192 << 24))
-1073741824
在本地主机上,这是一台带有 BASH 的 32 机器:
echo $((192 << 55))
6917529027641081856
echo $((192 << 56))
-4611686018427387904