$ echo $(( 255 ))
255
$ echo $(( 33 ))
33
$ echo $(( ~33 ))
-34
$ echo $(( ~255 ))
-256
$
私のカーネルは次のとおりです
$ uname -a
Linux HOSTNAME 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 i686 i386 GNU/Linux
質問: ~
数字の否定のためのAFAIK。しかし、なぜそして~33
なぜ?-34
~255
-256
ベストアンサー1
Bashのマニュアルページは次のように述べています。
! ~ logical and bitwise negation
署名された番号は通常、次の場所に保存されます。2の報酬表現する:
...
-4 = 1100
-3 = 1101
-2 = 1110
-1 = 1111
0 = 0000
1 = 0001
2 = 0010
3 = 0011
...
つまり、2のような数字を取ると、ビット単位で0010と解釈されます。ビット否定をすると1101になりますが、これは-3を表現したものです。