Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有 10 位有符号二进制数。我知道两种将它们转换为小数的 shell / bash 方法,但无法识别签名。
1111101010 应转换为 -22 而不是 1002。
echo "ibase=2;obase=A;1111101010"| bc
不起作用。以下也不行。
echo "$((2#1111101010))"
我能做些什么?
编辑:给出错误的预期结果;错误:-220,正确:-22。
也许有一个更简单的方法,但它只是简单的数学:
n=1111101010 sign=${n:0:1} num=${n:1} num=$((2#$num)) if [[ $sign == 1 ]]; then num=$(($num-512)) fi echo $num
-22(您的示例不正确)。