Mr *_*igs 3 binary bash twos-complement
我正在尝试在 Shellscript(Bash) 中创建一个简单的程序来计算 2 的补码二进制数。
作为测试,我只使用了 8 位二进制值 (00000100),但我不断收到“Bad Substitution”错误,我不知道为什么。
#!/bin/bash
binary=00000100
firstBit=${binary:0:1}
secondBit=${binary:1:1}
thirdBit=${binary:2:1}
fourthBit=${binary:3:1}
fifthBit=${binary:4:1}
sixthBit=${binary:5:1}
seventhBit=${binary:6:1}
eighthBit=${binary:7:1}
binaryNew=""
if [[ $firstBit == "1" ]]
then
binaryNew=0
if [[ $secondBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $thirdBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $fourthBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $fifthBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $sixthBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $seventhBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
if [[ $eighthBit == "1" ]]
then
binaryNew+=0
else
binaryNew+=1
fi
fi
fi
fi
fi
fi
fi
fi
echo $binaryNew=
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
谢谢
要对 8 位二进制值进行二进制补码:
$ binary=00000100
$ x=$((2#$binary))
$ [ "$x" -gt 127 ] && ((x=x-256)); echo "$x"
4
Run Code Online (Sandbox Code Playgroud)
该表达式$((2#$binary))执行从二进制到十进制的转换。
这些命令[ "$x" -gt 127 ] && ((x=x-256))对 8 位值执行二进制补码。