在Bash中否定无符号数

时间:2010-03-07 20:18:21

标签: bash hex affinity complement

我有一个数字(十六进制),我想要一个补码。例如,如果X = 20我希望bash执行否定并返回Y = ~X = DF。它不必是bash,但它应该使用一个通用的命令行工具,我可以将其包装到脚本中。还要注意,这些数字都应该是无符号的,我希望它们不会溢出可用的比特(例如,20只能是8比特,所以输出应该是8比特的补码)

我尝试过使用bash和bc的各种各样的东西,但是没有找到合适的组合。有什么想法吗?

(如果有人关心,目标是将IRQ亲和力设置为特定CPU,然后将其他IRQ设置为所有其他处理器。)

2 个答案:

答案 0 :(得分:2)

printf "%X" $((255-16#20))

16#告诉bash这个号码是16号。

答案 1 :(得分:1)

啊,我是个白痴。

printf "%x\n" $(echo $((~ 16#$INPUT)))

诀窍,还是足够接近技巧。