2010-03-07 7 views
1

У меня есть номер (hex), и я хочу его дополнение. Например, если X = 20 Я хочу, чтобы bash выполнял отрицание и возвращал Y = ~X = DF. Он не должен быть в bash, но он должен использовать обычный инструмент командной строки, который я могу обернуть в скрипт. Также обратите внимание, что все числа должны быть без знака, и я бы предпочел, чтобы они не переполняли доступные биты (например, 20 было бы всего 8 бит, поэтому выход должен быть 8-битным дополнением к этому).Negate Unsigned Number in Bash

Я пробовал различные вещи, используя bash и bc, но не нашел правильную комбинацию. Есть идеи?

(Если кто-то заботится, цель состоит в том, чтобы установить сродство IRQ к определенному CPU, а затем установить другой IRQs для всех других процессоров.)

ответ

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

16# говорит Баш, что число находится в базе 16.

1

Ах, я идиот.

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

Есть трюк или достаточно близко к трюку.

+0

Параметр '$ (эхо) не является необходимым:' Printf "% х \ п" $ ((~ 16 # $ INPUT)) ' –

 Смежные вопросы

  • Нет связанных вопросов^_^