我正在尝试对shell中的两个二进制数执行XOR按位运算。 如果, a = 00001000 b = 00110011 我的输出应该是00111011
Shell是否支持对二进制数字进行XOR操作? 我也尝试过从下载Logic.bc文件 http://phodd.net/gnu-bc/code/logic.bc 但是它显示了错误 运行时错误(func =(main),adr = 270):函数xor未定义。 谁能帮我解决这个问题
答案 0 :(得分:0)
更新后的答案
您的数字似乎是二进制数字的字符串,因此您需要进行以下转换:
perl -e 'print (oct("0b".$ARGV[0])^oct("0b".$ARGV[1]))' 00111100 00001101
49
或者,如果您想要相同格式的答案:
perl -e 'printf("%.8b",oct("0b".$ARGV[0])^oct("0b".$ARGV[1]))' 00111100 00001101
00110001
原始答案
与其引入下载晦涩的bc
脚本的依赖,不如考虑利用已经内置的内容。
例如,Perl内置在Linux和macOS上:
perl -e 'print ((0+$ARGV[0])^$ARGV[1])' 60 13
49
类似PHP:
php -r 'echo (0+$argv[1])^$argv[2];' 60 13
49
您可能有awk
:
awk -v x=60 -v y=13 'BEGIN{print xor(x,y)}'
49
或者Python:
python -c 'import sys; print(int(sys.argv[1])^int(sys.argv[2]))' 60 13
49