我有一个数字(十六进制),我想要一个补码。例如,如果X = 20
我希望bash执行否定并返回Y = ~X = DF
。它不必是bash,但它应该使用一个通用的命令行工具,我可以将其包装到脚本中。还要注意,这些数字都应该是无符号的,我希望它们不会溢出可用的比特(例如,20
只能是8比特,所以输出应该是8比特的补码)
我尝试过使用bash和bc的各种各样的东西,但是没有找到合适的组合。有什么想法吗?
(如果有人关心,目标是将IRQ亲和力设置为特定CPU,然后将其他IRQ设置为所有其他处理器。)
答案 0 :(得分:2)
printf "%X" $((255-16#20))
16#
告诉bash这个号码是16号。
答案 1 :(得分:1)
printf "%x\n" $(echo $((~ 16#$INPUT)))
诀窍,还是足够接近技巧。