2016-11-18 15 views

cevap

7

Kolayca bir aritmetik bağlamda, söz konusu numaraları bitshift edebilirsiniz:

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

Yes.

Aritmetik ifadeler, temel 16 sayıları ve her zamanki gibi C işleçlerini destekler.

Örnek: Elbette

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

(bir Aritmetik Genişleme içinde) bitsel işlemleri yapabilirsiniz:

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

Veya: Değer, bir set olabilir

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

Değişken:

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

Ve OR yapabilirsiniz AND ve XOR:

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

Ve de hex sonucu almak için:

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

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

$ printf '%X\n' "$((0x12345678^0xDEADBEEF))"  # Bitwise XOR 
CC99E897 
İlgili konular