ビット演算子ノート

2112 ワード

ビット演算子ノート


10進数:42対応バイナリ:原号:000000000000000000000000000000000101010逆符号:11111111111111111010101符号:11111111111111111111111111111111111111111010110//符号=原号逆+1=逆符号+1
  11111111111111111111111111010101
+ 1
  11111111111111111111111111010110

42取反(逆符号):~42

ビットと&演算


9 & 5
9=    1001
5=    0101
      0001    =1

9 & 5 =1
通常255(11111111または16進0 xFF)と&演算し、高8ビット清0、低8ビット保持

ビットまたは|演算


9 | 5
 9= 00001001 5= 00000101 00001101 =13

ビット別OR^演算


9 ^ 5
9=      00001001
5=      00000101
        00001100    =12 

左シフト演算<<


左シフト演算子「<<」は両目演算子です.左シフトnビットは2を乗じたn次方である.その機能は「<<」の左の演算数の各バイナリを全部左に数ビットシフトし、「<<」の右の数で移動するビット数を指定し、高位を捨て、低位を0に補う.9<<3
9= 00001001 << 00001001000 =72

右シフト演算>>


右シフト演算子">>は両目演算子です.右シフトnビットは、2で割ったn次数で説明すべきものであり、符号数がある場合、右シフト時に符号ビットが付随して移動する.正数の場合、最高位補0、負数の場合、シンボルビットは1であり、最高位が補0または補1はコンパイルシステムの規定に依存する.Turbo Cと多くのシステムは補1と規定されている.9>>3
9= 00001001 >> 00000001001 =1

-9>>3
-9= 10001001 >>     11100001001   =-777

符号なし右シフト


符号なし右シフト(>>>>>)は,シフト中に符号要素を考慮せずに正数処理する.シンボルビットは、常に0 9>>3および-9>>>3の等値です.
9= 00001001 >> 00000001001 =1