2016-11-18 5 views

答えて

7

あなたは簡単に算術文脈で、このような数字をビットシフトすることができます

$ hex="0x12345678" 
$ result=$((hex << 1)) 
$ printf "Result in hex notation: 0x%x\n" "$result" 
0x2468acf0 
2

Yes

算術式は、ベース16の数字とすべての通常のC演算子をサポートします。

例:もちろん

$ hex="0xff" 
$ echo $((hex >> 1)) 
127 
7

あなたは(数式展開の内側)ビット演算を行うことができます。

$ echo "$((0x12345678 << 1))" 
610839792 

または:値を設定することができ

$ echo "$((16#12345678 << 1))" 
610839792 

変数:

$ var=0x12345678   # or var=16#12345678 
$ echo "$((var << 1))" 
610839792 

そして、あなたは、ORを行うことができ、ANDとXOR:

$ echo "$((0x123456 | 0x876543))" 
9925975 

、同様の六角で結果を得るために:

$ printf '%X\n' "$((0x12345678 | 0xDEADBEEF))"  # Bitwise OR 
DEBDFEFF 

$ printf '%X\n' "$((0x12345678 & 0xDEADBEEF))"  # Bitwise AND 
12241668 

$ printf '%X\n' "$((0x12345678^0xDEADBEEF))"  # Bitwise XOR 
CC99E897 
関連する問題