Преобразовать десятичные двоичные числа со знаком в десятичное?
У меня есть 10-битные двоичные числа со знаком. Я знаю два метода shell / bash, чтобы преобразовать их в десятичные числа, но подпись не распознается.
1111101010 следует преобразовать в -22, а не в 1002.
echo "ibase=2;obase=A;1111101010"| bc
не работает Ни один не делает следующее.
echo "$((2#1111101010))"
Что я могу сделать?
Изменить: дал неправильный ожидаемый результат; неправильно: -220, правильно: -22.
1 ответ
Решение
Может быть, есть более простой способ, но это просто математика:
n=1111101010
sign=${n:0:1}
num=${n:1}
num=$((2#$num))
if [[ $sign == 1 ]]; then
num=$(($num-512))
fi
echo $num
-22 (ваш пример неверен).