コンピュータのバイナリ符号化については、これらを知っておく必要があります.
原符号、逆符号、補符号の計算方法
結論:正数は、原符号=そのバイナリ符号化原符号=逆符号=補符号 である.負数は、原符号=その絶対値バイナリ符号(すなわち、正数に対応する原符号)であり、最高位置1の逆符号=原符号符号ビットは変わらず、他のビットは逆符号=逆符号+1 をとる
例:バイトのintタイプの数字 四バイトintタイプ負数 どうして補コードがあるの?
コンピュータ内部に保存されているのは、すべて数字の補コードです!!!補符号で計算すると,正数演算,負数演算,正負数混合演算にかかわらず,加算処理として迅速に計算して結果を得ることができる.例えば:9-9は9+(-9)と見なすことができて、符号を補って計算した後に直接0を得ることができて、記号のビットを管理しません!
だから、コードを補うのは面倒そうですが、コンピューターにやさしいですね.簡単に言えば、すべて補コードを使うと、
よく使われるビット演算子には
演算規則: となる. となる. である. をとる. に相当する. を捨てる.
ビット演算の一般的な適用シーン
口诀清零取位要用于与,某位置一可以或.反対と交換を取るには、簡単に異或を緩めます.
例:某位清零,该位 ある数のあるビットの値を取るべきで、この位置 ある位置を1つ、その位置 .は、あるビットを反転する、その位置 である. 2 2 2つの数を交換するには、 a = a^b b = a^b a = a^b
異種または交換の2つの数の原理について:第2のステップでは、b=a^b=abb=a(bb)=a^0=a
結論:
例:
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 -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 ^
を使用してもよい.方法は以下の通りである.異種または交換の2つの数の原理について:第2のステップでは、b=a^b=abb=a(bb)=a^0=a