コンピュータのバイナリ符号化については、これらを知っておく必要があります.


原符号、逆符号、補符号の計算方法
結論:
  • 正数は、原符号=そのバイナリ符号化原符号=逆符号=補符号
  • である.
  • 負数は、原符号=その絶対値バイナリ符号(すなわち、正数に対応する原符号)であり、最高位置1の逆符号=原符号符号ビットは変わらず、他のビットは逆符号=逆符号+1
  • をとる
    例:
  • バイトのintタイプの数字9元コード:0000 0000 0000 0000 0000 0000 0000 0000 1001反コード:0000 0000 0000 0000 0000 0000 0000 1001補コード:0000 0000 0000 0000 0000 1001補コード:0000 0000 0000 0000 1001
  • 四バイトintタイプ負数-9原コード:1000 0000 0000 0000 0000 0000 0000 0000 1001反コード:1111 1111 1111 1111 1111 1111 1111 1111 1111 0110補コード:1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0111
  • どうして補コードがあるの?
    コンピュータ内部に保存されているのは、すべて数字の補コードです!!!補符号で計算すると,正数演算,負数演算,正負数混合演算にかかわらず,加算処理として迅速に計算して結果を得ることができる.例えば:9-9は9+(-9)と見なすことができて、符号を補って計算した後に直接0を得ることができて、記号のビットを管理しません!
    だから、コードを補うのは面倒そうですが、コンピューターにやさしいですね.簡単に言えば、すべて補コードを使うと、 , , , 。ビット演算規則
    よく使われるビット演算子には&,|,^,~,<<,>>があります.もちろん、Java開発者にとって、混同されやすい>>>もあります.
    演算規則:
  • &と演算の両方のビットが1の場合、結果は1
  • となる.
  • |または演算の両方のビットが0の場合、結果は0
  • となる.
  • ^異或演算の2つのビットは同じ0であり、相異は1
  • である.
  • ~逆算0変1,1変0
  • をとる.
  • <<左シフト各2進位全部左シフト数ビット、高位廃棄、低位補0(2乗じに相当)
  • >>符号付き右シフト各バイナリビットはすべて右シフト数ビットで、符号ビットは変わらず、正数左補0、負数左補1、低位捨て(2で割る)
  • に相当する.
  • >>>符号なし右シフト各バイナリビットはすべて右シフト数ビット、左側は一律に0を補い、低位は
  • を捨てる.
    ビット演算の一般的な適用シーン
    口诀清零取位要用于与,某位置一可以或.反対と交換を取るには、簡単に異或を緩めます.
    例:
  • 某位清零,该位&一个0就
  • ある数のあるビットの値を取るべきで、この位置&の1
  • ある位置を1つ、その位置|ある1で
  • .
  • は、あるビットを反転する、その位置^の1
  • である.
  • 2 2 2つの数を交換するには、^を使用してもよい.方法は以下の通りである.
  • a = a^b
  • b = a^b
  • a = a^b


  • 異種または交換の2つの数の原理について:第2のステップでは、b=a^b=abb=a(bb)=a^0=a