gpt4 book ai didi

bash - shell 脚本中的 2 的补码

转载 作者:行者123 更新时间:2023-11-29 09:17:26 25 4
gpt4 key购买 nike

我正在尝试在 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=

如有任何帮助,我们将不胜感激。

谢谢

最佳答案

对 8 位二进制值进行二进制补码:

$ binary=00000100
$ x=$((2#$binary))
$ [ "$x" -gt 127 ] && ((x=x-256)); echo "$x"
4

注意事项

  1. 表达式 $((2#$binary)) 将二进制转换为十进制。

  2. 命令 [ "$x"-gt 127 ] && ((x=x-256)) 对 8 位值执行二进制补码。

    <

关于bash - shell 脚本中的 2 的补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47849388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com